Commit a5718c4c13792b7eb81cc79091f33d72426da4f4
Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into
pudong
Showing
27 changed files
with
1044 additions
and
319 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/repository/oil/YlbRepository.java
| ... | ... | @@ -46,7 +46,8 @@ public interface YlbRepository extends BaseRepository<Ylb, Integer>{ |
| 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<Ylb, Integer>{ |
| 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<Ylb,Integer> 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<Ylb,Integer> 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<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 | + <!--<!– 不丢失日志.默认的,如果队列的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/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="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').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
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 | //信号状态标记 | ... | ... |