Commit a5718c4c13792b7eb81cc79091f33d72426da4f4

Authored by 娄高锋
2 parents fed7d37a 7c044cb7

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

pudong
Showing 27 changed files with 1044 additions and 319 deletions
... ... @@ -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/repository/oil/YlbRepository.java
... ... @@ -46,7 +46,8 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
46 46 + " and y.xlbm like %?4% and y.nbbm like %?5%",nativeQuery=true)
47 47 List<Ylb> listMaxRqJcsx(String rq,String gsbm,String fgsbm,String xlbm,String nbbm);
48 48  
49   - @Query(value="select * from bsth_c_ylb where to_days(?1) -to_days(rq) <30 "
  49 + @Query(value="select * from bsth_c_ylb where "
  50 + + " DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= rq "
50 51 + " and rq< ?1 and ssgsdm like %?2%"
51 52 + " and fgsdm like %?3% and xlbm like %?4% and nbbm like %?5% "
52 53 + " order by nbbm , rq desc,jcsx desc,lp desc",nativeQuery=true)
... ... @@ -125,6 +126,12 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
125 126 List<Object[]> checkNbmmYl(String rq, String gsbm,String fgsbm,String xlbm,String nbbm);
126 127  
127 128  
  129 + @Query(value="select nbbm,cs from (select nbbm,count(nbbm) as cs from ("
  130 + + " select nbbm,fgsdm from bsth_c_ylb where rq=?1 "
  131 + + " and ssgsdm like %?2% group by nbbm,fgsdm "
  132 + + " ) t group by t.nbbm) x where x.cs >1 ",nativeQuery=true)
  133 + List<Object[]> checkNbmmFgs(String rq, String gsbm);
  134 +
128 135 @Query(value="select jzl,yh,sh from Ylb s "
129 136 + " where to_days(s.rq)=to_days(?1) "
130 137 + " and s.ssgsdm like %?2% "
... ...
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
... ... @@ -12,6 +12,7 @@ import com.bsth.data.pilot80.PilotReport;
12 12 import com.bsth.data.safe_driv.SafeDriv;
13 13 import com.bsth.data.safe_driv.SafeDrivCenter;
14 14 import com.bsth.data.schedule.DayOfSchedule;
  15 +import com.bsth.entity.Line;
15 16 import com.bsth.entity.LineVersions;
16 17 import com.bsth.entity.directive.D80;
17 18 import com.bsth.entity.realcontrol.ScheduleRealInfo;
... ... @@ -252,14 +253,19 @@ public class GpsServiceImpl implements GpsService {
252 253 for(Map<String, Object> rs : dataList){
253 254 int index=dataList.indexOf(rs);
254 255 if (index< dataList.size()-1&&!map_get_str( rs,"LINE_ID").equals(map_get_str( dataList.get(index+1),"LINE_ID"))){
  256 +
  257 + Line cLine =lineRepository.findOne(Integer.valueOf(map_get_str( rs,"LINE_ID")));
  258 + Line nextLine =lineRepository.findOne(Integer.valueOf(map_get_str( dataList.get(index+1),"LINE_ID")));
  259 + if (cLine!=null&&nextLine!=null){
255 260 Map<String,Object> LSmap=new HashMap<>();
256   - String name=lineRepository.findOne(Integer.valueOf(map_get_str( rs,"LINE_ID"))).getName();
257   - String NextName=lineRepository.findOne(Integer.valueOf(map_get_str( dataList.get(index+1),"LINE_ID"))).getName();
  261 + String name=cLine.getName();
  262 + String NextName=nextLine.getName();
258 263 LSmap.put("abnormalType","linesSwitch");
259 264 LSmap.put("line_line",name+"-->"+NextName);
260 265 LSmap.put("st",map_get_long(rs, "TS"));
261 266 LSmap.put("et",index== dataList.size()-1?map_get_long(rs, "TS"):map_get_long( dataList.get(index+1), "TS"));
262 267 lineSwitch.add(LSmap);
  268 + }
263 269 }
264 270 serviceState = map_get_long(rs, "SERVICE_STATE");
265 271 if(getGpsValid(serviceState) == 1){
... ...
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
... ... @@ -291,6 +291,26 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
291 291 String sxtj=map2.get("sxtj").toString();
292 292 if(sxtj.equals("0")){
293 293 listpb=listpbs;
  294 + }else if (sxtj.equals("5")){
  295 + List<String> stringList=new ArrayList<String>();
  296 +
  297 + List<Object[]> objectLists = repository.checkNbmmFgs(rq, gsbm);
  298 + for (int i = 0; i < objectLists.size(); i++) {
  299 + String clbm=objectLists.get(i)[0].toString();
  300 + stringList.add(clbm);
  301 + }
  302 +
  303 + for (int i = 0; i < stringList.size(); i++) {
  304 + String strNbbm=stringList.get(i);
  305 + for (int j = 0; j < listpbs.size(); j++) {
  306 + Map<String, Object> map = listpbs.get(j);
  307 + String mapNbbm=map.get("clZbh").toString();
  308 + if(strNbbm.equals(mapNbbm)){
  309 + listpb.add(map);
  310 + }
  311 + }
  312 + }
  313 +
294 314 }else{
295 315 List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, "",nbbm);
296 316 List<String> stringList=new ArrayList<String>();
... ... @@ -1269,6 +1289,19 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1269 1289 else
1270 1290 listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
1271 1291 }
  1292 + }else if(sxtj.equals("5")){
  1293 + List<Object[]> objectLists = repository.checkNbmmFgs(rq, gsbm);
  1294 + for (int i = 0; i < objectLists.size(); i++) {
  1295 + String clbm =objectLists.get(i)[0].toString();
  1296 + stringList.add(clbm);
  1297 + }
  1298 +
  1299 + if (stringList.size() > 0) {
  1300 + if (type.equals("1"))
  1301 + listYlb = repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1302 + else
  1303 + listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  1304 + }
1272 1305 } else {
1273 1306 List<Object[]> objectLists;
1274 1307 if (sxtj.equals("3")) {
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -590,6 +590,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
590 590  
591 591 //计算班次实际执行时间
592 592 schAttrCalculator.calcRealDate(t).calcAllTimeByFcsj(t);
  593 + //处理计达跨24点
  594 + LineConfig conf = lineConfigData.get(t.getXlBm());
  595 + if (t.getZdsj().compareTo(conf.getStartOpt()) < 0) {
  596 + t.setZdsjT(sdfyyyyMMddHHmm.parse(t.getScheduleDateStr() + t.getZdsj()).getTime() + (1000 * 60 * 60 * 24));
  597 + }
593 598 if (t.getZdsjT() < t.getFcsjT()) {
594 599 rs.put("status", ResponseCode.ERROR);
595 600 rs.put("msg", "起终点时间异常!");
... ...
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 + <!--&lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
  189 + <!--<discardingThreshold >0</discardingThreshold>-->
  190 + <!--&lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
  191 + <!--<queueSize>512</queueSize>-->
  192 + <!--&lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
  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
... ... @@ -3,7 +3,7 @@
3 3 if (!$('body').hasClass('page-sidebar-closed')) {
4 4 $('.menu-toggler.sidebar-toggler').click();
5 5 }
6   -
  6 +
7 7 $('.openHaveSkb').on('click',function() {
8 8 var skbId = $("#skbNameSelect").val();
9 9 var argus = {
... ...
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/pages/oil/list_ph.html
... ... @@ -149,6 +149,7 @@
149 149 <option value="2">一车多单</option>
150 150 <option value="3">有加油没里程</option>
151 151 <option value="4">有里程没加油</option>
  152 + <option value="5">跨分工用车</option>
152 153 </select>
153 154 </div>
154 155  
... ... @@ -661,12 +662,17 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
661 662 $('tr.filter .filter-submit').on('click', function () {
662 663 var ylbGsdm=$("#ylbListGsdmId").val();
663 664 var ylbFgsdm=$("#ylbListFgsdmId").val();
  665 + var nbbm=$("#nbbm").val();
664 666 if ($("#rq").val() == "" || $("#rq").val() ==null){
665 667 layer.msg('请选择日期.');
666   - }else if(ylbGsdm=="" || ylbGsdm==null||ylbFgsdm==null){
  668 + }else if(ylbGsdm=="" || ylbGsdm==null){
667 669 // || ylbFgsdm==""
668   - layer.msg('请选择公司和分公司.');
669   - }else {
  670 + layer.msg('请选择公司');
  671 + }
  672 + /* else if( (ylbFgsdm==""||ylbFgsdm==null) && (nbbm=="" || nbbm==null) ){
  673 + layer.msg('不选择分公司处理输入车辆自编号');
  674 + } */
  675 + else {
670 676 var params = getParamsList();
671 677 page = 0;
672 678 jsDoQuery(params, true);
... ...
src/main/resources/static/pages/permission/user/authorize.html
1   -<!DOCTYPE html>
  1 +<!--<!DOCTYPE html>-->
2 2 <html lang="zh-cn">
3 3  
4 4 <head>
5 5 <meta charset="UTF-8">
  6 + <script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
  7 + <script src="/assets/js/common.js"></script>
  8 + <script src="/assets/plugins/uk3.0/uikit.min.js"></script>
  9 + <script src="/assets/plugins/uk3.0/uikit-icons.min.js"></script>
  10 + <script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js"></script>
  11 + <!-- EventProxy -->
  12 + <script src="/assets/js/eventproxy.js"></script>
  13 + <!-- art-template 模版引擎 -->
  14 + <script src="/assets/plugins/template.js"></script>
  15 + <script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  16 + <script src="/assets/plugins/ztree_v3/js/jquery.ztree.core.min.js"></script>
  17 + <script src="/assets/plugins/ztree_v3/js/jquery.ztree.excheck.min.js"></script>
6 18 <link rel="stylesheet" href="/assets/plugins/uk3.0/uikit.min.css"/>
7 19 <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" />
8 20 <link rel="stylesheet" href="/assets/plugins/ztree_v3/css/zTreeStyle/zTreeStyle.css" />
9 21 <style>
10   - html,body{
11   - height: 100%;
12   - }
13   - .ct_page{
14   - padding: 25px 15px;
15   - height: 100%;
16   - height: calc(100% - 50px);
17   - }
  22 + html,body{
  23 + height: 100%;
  24 + }
  25 + .ct_page{
  26 + padding: 25px 15px;
  27 + height: 100%;
  28 + height: calc(100% - 50px);
  29 + }
18 30  
19   - .ct_cont{
20   - height: calc(100% - 41px);
21   - }
  31 + .ct_cont{
  32 + height: calc(100% - 41px);
  33 + }
22 34  
23   - .ct_cont>div>div.uk-card{
24   - height: 99%;
25   - }
  35 + .ct_cont>div>div.uk-card{
  36 + height: 99%;
  37 + }
26 38  
27   - form .uk-inline{
28   - width: calc(100% - 4px);
29   - margin-left: 2px;
30   - }
  39 + form .uk-inline{
  40 + width: calc(100% - 4px);
  41 + margin-left: 2px;
  42 + }
31 43  
32   - .ct-card-body{
33   - overflow: auto;
34   - padding: 1px 1px 0 2px;
35   - height: calc(100% - 54px);
36   - position: relative;
37   - margin-top: -12px;
38   - }
  44 + .ct-card-body{
  45 + overflow: auto;
  46 + padding: 1px 1px 0 2px;
  47 + height: calc(100% - 54px);
  48 + position: relative;
  49 + margin-top: -12px;
  50 + }
39 51  
40   - .ct_li_desc{
41   - color: #a8a8a8;
42   - font-size: 13px;
43   - }
  52 + .ct_li_desc{
  53 + color: #a8a8a8;
  54 + font-size: 13px;
  55 + }
44 56  
45   - .ct-card-body .uk-list-large{
46   - font-size: 14px;
47   - }
  57 + .ct-card-body .uk-list-large{
  58 + font-size: 14px;
  59 + }
48 60  
49   - .ct-card-body .uk-list-large>li{
50   - cursor: default;
51   - padding-left: 20px;
52   - margin-top: 2px !important;
53   - padding-top: 17px !important;
54   - position: relative;
55   - }
  61 + .ct-card-body .uk-list-large>li{
  62 + cursor: default;
  63 + padding-left: 20px;
  64 + margin-top: 2px !important;
  65 + padding-top: 17px !important;
  66 + position: relative;
  67 + }
56 68  
57   - .ct-card-body .uk-list-large>li:hover{
58   - background: #edecec;
59   - }
  69 + .ct-card-body .uk-list-large>li:hover{
  70 + background: #edecec;
  71 + }
60 72  
61   - .ct-card-body .uk-list-large>li.active{
62   - background: #1e87f0 !important;
63   - color: white;
64   - }
  73 + .ct-card-body .uk-list-large>li.active{
  74 + background: #1e87f0 !important;
  75 + color: white;
  76 + }
65 77  
66   - .ct-card-body .uk-list-large>li.active>span.role-code{
67   - color: #ffffff;
68   - }
  78 + .ct-card-body .uk-list-large>li.active>span.role-code{
  79 + color: #ffffff;
  80 + }
69 81  
70   - .ct-card-body .uk-list-large.role-list>li:hover{
71   - background: #fff494;
72   - }
  82 + .ct-card-body .uk-list-large.role-list>li:hover{
  83 + background: #fff494;
  84 + }
73 85  
74   - .ct-card-body .uk-list-large>li.active .ct_li_desc{
75   - color: #e6e6e6;
76   - }
  86 + .ct-card-body .uk-list-large>li.active .ct_li_desc{
  87 + color: #e6e6e6;
  88 + }
77 89  
78   - .ct-card-body .uk-list-large>li>span.uk-badge{
79   - position: absolute;
80   - top: 17px;
81   - right: 25px;
82   - }
  90 + .ct-card-body .uk-list-large>li>span.uk-badge{
  91 + position: absolute;
  92 + top: 17px;
  93 + right: 25px;
  94 + }
83 95  
84   - .ct-card-body .uk-list-large>li>span.role-code{
85   - padding: 4px 6px;
86   - color: #a8a8a8;
87   - margin-left: 5px;
88   - }
  96 + .ct-card-body .uk-list-large>li>span.role-code{
  97 + padding: 4px 6px;
  98 + color: #a8a8a8;
  99 + margin-left: 5px;
  100 + }
89 101  
90   - .top_title{
91   - padding: 9px 0 5px 15px;
92   - border-bottom: 1px solid #ededed;
93   - border-left: 5px solid #FFC107;
94   - }
  102 + .top_title{
  103 + padding: 9px 0 5px 15px;
  104 + border-bottom: 1px solid #ededed;
  105 + border-left: 5px solid #FFC107;
  106 + }
95 107  
96   - .top_title>.desc{
97   - font-size: 13px;
98   - color: grey;
99   - margin-top: 3px;
100   - }
  108 + .top_title>.desc{
  109 + font-size: 13px;
  110 + color: grey;
  111 + margin-top: 3px;
  112 + }
101 113  
102   - .left_menu_list{
103   - overflow: auto;
104   - position: relative;
105   - }
  114 + .left_menu_list{
  115 + overflow: auto;
  116 + position: relative;
  117 + }
106 118  
107   - .left_menu_list .ps-container > .ps-scrollbar-x-rail, .ps-container > .ps-scrollbar-y-rail{
108   - opacity: 0.6 !important;
109   - padding: 0 !important;
110   - }
  119 + .left_menu_list .ps-container > .ps-scrollbar-x-rail, .ps-container > .ps-scrollbar-y-rail{
  120 + opacity: 0.6 !important;
  121 + padding: 0 !important;
  122 + }
111 123  
112   - ._company{
113   - margin: 15px 0px;
114   - }
115   - ._company>h5{
116   - margin-bottom: 10px;
117   - font-size: 15px;
118   - color: #6b6b6b;
119   - text-indent: 12px;
120   - }
121   - ._company>._fgs>label{
122   - padding: 3px 12px 3px 10px;
123   - display: inline-block;
124   - border: 1px solid gainsboro;
125   - border-radius: 2px;
126   - margin: 5px;
127   - font-size: 14px;
128   - }
129   - ._company>._fgs>label.active{
130   - background: #1e87f0;
131   - color: #fff;
132   - }
133   - ._company .uk-checkbox:checked:focus,
134   - .line_checkbox_list .uk-checkbox:checked:focus{
135   - background-color: #1e87f0 !important;
136   - }
137   - .save_icon{
138   - position: absolute;
139   - right: 2px;
140   - background: #bec4c9;
141   - font-size: 12px;
142   - padding: 2px 15px;
143   - color: #fff;
144   - box-shadow: 0 5px 15px rgba(0,0,0,0.08);
145   - cursor: pointer;
146   - }
147   - .save_icon:hover{
148   - background: #FFC107;
149   - }
150   - .data_auth_list{
151   - position: relative;
152   - }
153   - #user_authorize_wrap .top_title{
154   - border-left: 5px solid #cacac8;
155   - }
156   - .xd_line_list{
157   - height: 37%;
158   - padding: 7px;
159   - border-bottom: 1px solid #f2f2f2;
160   - overflow: auto;
161   - position: relative;
162   - }
163   - .xd_line_list>h5{
164   - color: #858585;
165   - margin: 5px 5px 5px 0;
166   - font-size: 14px;
167   - }
168   - .sub_lines{
169   - padding-left: 15px;
170   - }
171   - .sub_lines>span.line_btn {
172   - background: #00BCD4;
173   - color: #fff;
174   - padding: 4px 9px;
175   - display: inline-block;
176   - min-width: 68px;
177   - text-align: center;
178   - margin: 5px 2px;
179   - box-shadow: 0 5px 9px rgba(0,0,0,0.08);
180   - cursor: pointer;
181   - font-size: 14px;
182   - font-family: 微软雅黑;
183   - }
  124 + ._company{
  125 + margin: 15px 0px;
  126 + }
  127 + ._company>h5{
  128 + margin-bottom: 10px;
  129 + font-size: 15px;
  130 + color: #6b6b6b;
  131 + text-indent: 12px;
  132 + }
  133 + ._company>._fgs>label{
  134 + padding: 3px 12px 3px 10px;
  135 + display: inline-block;
  136 + border: 1px solid gainsboro;
  137 + border-radius: 2px;
  138 + margin: 5px;
  139 + font-size: 14px;
  140 + }
  141 + ._company>._fgs>label.active{
  142 + background: #1e87f0;
  143 + color: #fff;
  144 + }
  145 + ._company .uk-checkbox:checked:focus,
  146 + .line_checkbox_list .uk-checkbox:checked:focus{
  147 + background-color: #1e87f0 !important;
  148 + }
  149 + .save_icon{
  150 + position: absolute;
  151 + right: 2px;
  152 + background: #bec4c9;
  153 + font-size: 12px;
  154 + padding: 2px 15px;
  155 + color: #fff;
  156 + box-shadow: 0 5px 15px rgba(0,0,0,0.08);
  157 + cursor: pointer;
  158 + }
  159 + .save_icon:hover{
  160 + background: #FFC107;
  161 + }
  162 + .data_auth_list{
  163 + position: relative;
  164 + }
  165 + #user_authorize_wrap .top_title{
  166 + border-left: 5px solid #cacac8;
  167 + }
  168 + .xd_line_list{
  169 + height: 37%;
  170 + padding: 7px;
  171 + border-bottom: 1px solid #f2f2f2;
  172 + overflow: auto;
  173 + position: relative;
  174 + }
  175 + .xd_line_list>h5{
  176 + color: #858585;
  177 + margin: 5px 5px 5px 0;
  178 + font-size: 14px;
  179 + }
  180 + .sub_lines{
  181 + padding-left: 15px;
  182 + }
  183 + .sub_lines>span.line_btn {
  184 + background: #00BCD4;
  185 + color: #fff;
  186 + padding: 4px 9px;
  187 + display: inline-block;
  188 + min-width: 68px;
  189 + text-align: center;
  190 + margin: 5px 2px;
  191 + box-shadow: 0 5px 9px rgba(0,0,0,0.08);
  192 + cursor: pointer;
  193 + font-size: 14px;
  194 + font-family: 微软雅黑;
  195 + }
184 196  
185   - .sub_lines>span.line_btn.destroy{
186   - background: #ff5c5c;
187   - }
  197 + .sub_lines>span.line_btn.destroy{
  198 + background: #ff5c5c;
  199 + }
188 200  
189   - .sub_lines>span.line_btn.destroy:hover{
190   - background: #ff7373;
191   - }
  201 + .sub_lines>span.line_btn.destroy:hover{
  202 + background: #ff7373;
  203 + }
192 204  
193   - .sub_lines>span.line_btn:hover{
194   - background: #2dd7ed;
195   - }
196   - .add_line_icon{
197   - cursor: pointer;
198   - padding: 2px 5px;
199   - border-radius: 5px;
200   - display: inline-block;
201   - }
202   - .add_line_icon>i{
203   - vertical-align: top;
204   - margin-top: 3px;
205   - }
206   - .add_line_icon:hover{
207   - background: #ededed;
208   - }
209   - .ct_pattern_form{
210   - display: inline-block;
211   - }
212   - .xd_menu_grid{
213   - padding: 25px 25px 0 25px;
214   - height: calc(63% - 91px);
215   - }
216   - .xd_menu_grid .uk-list{
217   - border: 1px solid #ededed;
218   - height: calc(100% - 70px);
219   - overflow: auto;
220   - position: relative;
221   - }
  205 + .sub_lines>span.line_btn:hover{
  206 + background: #2dd7ed;
  207 + }
  208 + .add_line_icon{
  209 + cursor: pointer;
  210 + padding: 2px 5px;
  211 + border-radius: 5px;
  212 + display: inline-block;
  213 + }
  214 + .add_line_icon>i{
  215 + vertical-align: top;
  216 + margin-top: 3px;
  217 + }
  218 + .add_line_icon:hover{
  219 + background: #ededed;
  220 + }
  221 + .ct_pattern_form{
  222 + display: inline-block;
  223 + }
  224 + .xd_menu_grid{
  225 + padding: 25px 25px 0 25px;
  226 + height: calc(63% - 91px);
  227 + }
  228 + .xd_menu_grid .uk-list{
  229 + border: 1px solid #ededed;
  230 + height: calc(100% - 70px);
  231 + overflow: auto;
  232 + position: relative;
  233 + }
222 234  
223   - .xd_menu_grid .uk-list>li{
224   - margin: 5px 0 !important;
225   - padding: 10px 0 0 10px !important;
226   - font-size: 14px;
227   - }
228   - .top_tools{
229   - position: absolute;
230   - top: 15px;
231   - right: 25px;
232   - }
233   - .ct_field {
234   - display: inline-block;
235   - width: 240px;
236   - }
237   - .ct_field>select,.ct_field>input{
238   - width: calc(100% - 60px);
239   - }
240   - .line_checkbox_list{
241   - margin-top: 15px;
242   - }
243   - .line_checkbox_list>.btn{
244   - padding: 5px 7px;
245   - border-radius: 2px;
246   - display: inline-block;
247   - margin: 4px 9px;
248   - font-size: 14px;
249   - font-family: 微软雅黑;
250   - border: 1px solid #d9d9d9;
251   - width: 100px;
252   - overflow: hidden;
253   - text-overflow: ellipsis;
254   - white-space: nowrap;
255   - }
256   - .line_checkbox_list>.btn>input{
257   - margin-right: 5px;
258   - }
259   - .line_checkbox_list>.btn.active{
260   - background: #1e87f0;
261   - color: #fff;
262   - }
  235 + .xd_menu_grid .uk-list>li{
  236 + margin: 5px 0 !important;
  237 + padding: 10px 0 0 10px !important;
  238 + font-size: 14px;
  239 + }
  240 + .top_tools{
  241 + position: absolute;
  242 + top: 15px;
  243 + right: 25px;
  244 + }
  245 + .ct_field {
  246 + display: inline-block;
  247 + width: 240px;
  248 + }
  249 + .ct_field>select,.ct_field>input{
  250 + width: calc(100% - 60px);
  251 + }
  252 + .line_checkbox_list{
  253 + margin-top: 15px;
  254 + }
  255 + .line_checkbox_list>.btn{
  256 + padding: 5px 7px;
  257 + border-radius: 2px;
  258 + display: inline-block;
  259 + margin: 4px 9px;
  260 + font-size: 14px;
  261 + font-family: 微软雅黑;
  262 + border: 1px solid #d9d9d9;
  263 + width: 100px;
  264 + overflow: hidden;
  265 + text-overflow: ellipsis;
  266 + white-space: nowrap;
  267 + }
  268 + .line_checkbox_list>.btn>input{
  269 + margin-right: 5px;
  270 + }
  271 + .line_checkbox_list>.btn.active{
  272 + background: #1e87f0;
  273 + color: #fff;
  274 + }
263 275  
264   - .line_checkbox_list>.btn.destroy,
265   - .line_checkbox_list>.btn.destroy>input{
266   - border-color: #ff9595;
267   - color: #ff5c5c;
268   - }
  276 + .line_checkbox_list>.btn.destroy,
  277 + .line_checkbox_list>.btn.destroy>input{
  278 + border-color: #ff9595;
  279 + color: #ff5c5c;
  280 + }
269 281  
270   - .line_checkbox_list>.btn.destroy.active{
271   - background: #ff5c5c;
272   - color: #fff;
273   - }
  282 + .line_checkbox_list>.btn.destroy.active{
  283 + background: #ff5c5c;
  284 + color: #fff;
  285 + }
274 286  
275   - .line_checkbox_list>.btn.destroy.active>input{
276   - background-color: #ff5c5c !important;
277   - border-color: #ff5c5c !important;
278   - }
  287 + .line_checkbox_list>.btn.destroy.active>input{
  288 + background-color: #ff5c5c !important;
  289 + border-color: #ff5c5c !important;
  290 + }
279 291  
280   - #role_authorize_wrap .ztree *{
281   - font-size: 14px;
282   - }
283   - #role_authorize_wrap .ztree li{
284   - line-height: 21px;
285   - }
286   - .loading{
287   - height: 100%;
288   - text-align: center;
289   - }
290   - .loading .uk-spinner{
291   - margin-top: 200px;
292   - }
293   - .loading circle{
294   - stroke: red;
295   - }
  292 + #role_authorize_wrap .ztree *{
  293 + font-size: 14px;
  294 + }
  295 + #role_authorize_wrap .ztree li{
  296 + line-height: 21px;
  297 + }
  298 + .loading{
  299 + height: 100%;
  300 + text-align: center;
  301 + }
  302 + .loading .uk-spinner{
  303 + margin-top: 200px;
  304 + }
  305 + .loading circle{
  306 + stroke: red;
  307 + }
296 308  
297   - #select_line_modal .uk-checkbox:checked {
298   - background-color: #1e87f0;
299   - }
  309 + #select_line_modal .uk-checkbox:checked {
  310 + background-color: #1e87f0;
  311 + }
300 312 </style>
  313 +
301 314 </head>
302 315  
303 316 <body>
... ... @@ -342,6 +355,7 @@
342 355  
343 356 </div>
344 357 </div>
  358 +
345 359 </div>
346 360 </div>
347 361  
... ... @@ -359,18 +373,6 @@
359 373 <li class="uk-animation-fade uk-animation-fast" data-name="{{u.name}}" data-code="{{u.userNameUp}}" data-id="{{u.id}}">{{u.name}}<span class="role-code">{{u.userName}}</span></li>
360 374 {{/each}}
361 375 </script>
362   -<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
363   -<script src="/assets/js/common.js"></script>
364   -<script src="/assets/plugins/uk3.0/uikit.min.js"></script>
365   -<script src="/assets/plugins/uk3.0/uikit-icons.min.js"></script>
366   -<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" ></script>
367   -<!-- EventProxy -->
368   -<script src="/assets/js/eventproxy.js"></script>
369   -<!-- art-template 模版引擎 -->
370   -<script src="/assets/plugins/template.js"></script>
371   -<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
372   -<script src="/assets/plugins/ztree_v3/js/jquery.ztree.core.min.js"></script>
373   -<script src="/assets/plugins/ztree_v3/js/jquery.ztree.excheck.min.js"></script>
374 376 <script>
375 377 var storage = window.localStorage;
376 378  
... ... @@ -464,8 +466,6 @@
464 466 paramsRole['codeName'] = 'ROLE_ADMIN';
465 467 var userId=storage.getItem("editUser");
466 468 $get('/user',{id_eq:userId}, function (rs) {
467   - debugger
468   - //if (rs)
469 469 ep.emit('query_roles', rs.content[0].roles);
470 470 });
471 471  
... ...
src/main/resources/static/pages/permission/user/main.html
1   -<iframe src="authorize.html?origin=real_control_iframe" frameborder="0" style="height: 90%;width: 100%;"></iframe>
  1 +<iframe src="/pages/permission/user/authorize.html?origin=real_control_iframe" frameborder="0" style="height: 90%;width: 100%;"></iframe>
2 2 <div class="form-actions">
3 3 <div class="row">
4 4 <div class="col-md-offset-3 col-md-4">
5   - <!--<a href="main.html" class="btn green" ><i class="fa fa-check"></i> 上一步</a>-->
6   - <!--<button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button>-->
7   - <!--<a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>-->
8 5 </div>
9 6 </div>
10 7 </div>
11 8 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/css/line_schedule.css
... ... @@ -566,6 +566,12 @@ dl.relevance-active.intimity dd.tl-qrlb{
566 566 color: #f8e9cd;
567 567 }
568 568  
  569 +dl.relevance-active dd.tl-wfyd,
  570 +dl.relevance-active.intimity dd.tl-wfyd{
  571 + background: linear-gradient(to right, rgb( 246,193,10), rgb(226, 226, 168), #8baabf) !important;
  572 + color: #f8e9cd;
  573 +}
  574 +
569 575 dl.relevance-active dd.tl-wd,
570 576 dl.relevance-active.intimity dd.tl-wd{
571 577 background: linear-gradient(to right, #ffff00, rgb(226, 226, 168), rgb(139, 170, 191)) !important;
... ...
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 //按路牌分组
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/layout.html
... ... @@ -39,6 +39,7 @@
39 39 <span class="tl-xxfc">消息发出</span>
40 40 <span class="tl-xxsd">消息收到</span>
41 41 <span class="tl-xxrd">消息阅读</span>
  42 + <span class="tl-wfyd">无发有到</span>
42 43 </div>
43 44 </div>
44 45 </script>
... ...
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
... ... @@ -186,7 +186,7 @@ var gb_schedule_table = (function () {
186 186 };
187 187 //无发有到时间
188 188 var wfydcolor=function (sch) {
189   - if (sch.qdzArrDatesj!=''&&sch.qdzArrDatesj!=null&&sch.fcsjActual==null) {
  189 + if (sch.fcsjActual==null&&sch.zdsjActual!=null&&sch.zdsjActual!=''&&sch.status!=-1) {//sch.qdzArrDatesj!=''&&sch.qdzArrDatesj!=null&&
190 190 sch.status=4;
191 191 }
192 192 }
... ... @@ -274,7 +274,6 @@ var gb_schedule_table = (function () {
274 274 * @param lineCode
275 275 */
276 276 var reLoadAndRefresh = function (lineCode) {
277   - debugger
278 277 $.get('/realSchedule/lines', {
279 278 lines: lineCode + ','
280 279 }, function (rs) {
... ... @@ -387,8 +386,8 @@ var gb_schedule_table = (function () {
387 386 else
388 387 $(dds[8]).html('');
389 388 if (sch.lpChange==1) {
390   - var d8html=$(dds[8]).html();
391   - $(dds[8]).html(d8html+'<span class="uk-badge uk-badge-success out">换</span>');
  389 + var d8html=$(dds[5]).html();
  390 + $(dds[5]).html(d8html+'<span class="uk-badge uk-badge-success out">换</span>');
392 391 }
393 392  
394 393 //信号状态标记
... ...