Commit a3b6addc6427cbe6cc4a0e74af2188f2da5ca8ca
1 parent
45e19c79
update
Showing
17 changed files
with
278 additions
and
102 deletions
src/main/java/com/bsth/data/arrival/ArrivalData_GPS.java
| @@ -102,17 +102,21 @@ public class ArrivalData_GPS implements CommandLineRunner{ | @@ -102,17 +102,21 @@ public class ArrivalData_GPS implements CommandLineRunner{ | ||
| 102 | * @Description: TODO(清理内存数据) | 102 | * @Description: TODO(清理内存数据) |
| 103 | */ | 103 | */ |
| 104 | public void clearRAMData(String lineCode){ | 104 | public void clearRAMData(String lineCode){ |
| 105 | - //allArrivals.removeAll(lineCode); | ||
| 106 | - int count = 0; | 105 | + |
| 106 | + List<ArrivalEntity> remList = new ArrayList<>(); | ||
| 107 | 107 | ||
| 108 | //车辆映射的进出站数据,遍历删除对应线路数据。 | 108 | //车辆映射的进出站数据,遍历删除对应线路数据。 |
| 109 | Collection<ArrivalEntity> seList = startAndEndMaps.values(); | 109 | Collection<ArrivalEntity> seList = startAndEndMaps.values(); |
| 110 | for(ArrivalEntity arr : seList){ | 110 | for(ArrivalEntity arr : seList){ |
| 111 | - if(arr.getLineCode().equals(lineCode)){ | ||
| 112 | - if(startAndEndMaps.remove(arr.getDeviceId(), arr)){ | ||
| 113 | - count ++; | ||
| 114 | - } | ||
| 115 | - } | 111 | + if(arr.getLineCode().equals(lineCode)) |
| 112 | + remList.add(arr); | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + //删除数据 | ||
| 116 | + int count = 0; | ||
| 117 | + for(ArrivalEntity arr : remList){ | ||
| 118 | + startAndEndMaps.remove(arr.getNbbm(), arr); | ||
| 119 | + count ++; | ||
| 116 | } | 120 | } |
| 117 | 121 | ||
| 118 | logger.info(lineCode + " 清除到离站数据 ," + count); | 122 | logger.info(lineCode + " 清除到离站数据 ," + count); |
src/main/java/com/bsth/data/directive/DayOfDirectives.java
| @@ -142,31 +142,37 @@ public class DayOfDirectives { | @@ -142,31 +142,37 @@ public class DayOfDirectives { | ||
| 142 | 142 | ||
| 143 | public void clear(String device){ | 143 | public void clear(String device){ |
| 144 | int c60 = 0, c64 = 0; | 144 | int c60 = 0, c64 = 0; |
| 145 | - //清除60 | 145 | + //找到该设备的60数据 |
| 146 | Collection<D60> d60s = d60Map.values(); | 146 | Collection<D60> d60s = d60Map.values(); |
| 147 | + List<D60> rem60List = new ArrayList<>(); | ||
| 147 | for(D60 d60 : d60s){ | 148 | for(D60 d60 : d60s){ |
| 148 | - if(d60.getDeviceId().equals(device)){ | ||
| 149 | - //入库 | ||
| 150 | - if(d60.getReply47() == null) | ||
| 151 | - directiveService.save(d60); | ||
| 152 | - | ||
| 153 | - if(null != d60Map.remove(d60.getMsgId())) | ||
| 154 | - c60 ++; | ||
| 155 | - } | 149 | + if(d60.getDeviceId().equals(device)) |
| 150 | + rem60List.add(d60); | ||
| 151 | + } | ||
| 152 | + //清除60数据 | ||
| 153 | + for(D60 d60 : rem60List){ | ||
| 154 | + if(d60.getReply47() == null) | ||
| 155 | + directiveService.save(d60); | ||
| 156 | + if(null != d60Map.remove(d60.getMsgId())) | ||
| 157 | + c60 ++; | ||
| 156 | } | 158 | } |
| 157 | logger.info("清除60数据 ," + c60); | 159 | logger.info("清除60数据 ," + c60); |
| 158 | 160 | ||
| 159 | - //清除64 | 161 | + //找到该设备的64数据 |
| 160 | Collection<D64> d64s = d64Map.values(); | 162 | Collection<D64> d64s = d64Map.values(); |
| 163 | + List<D64> rem64List = new ArrayList<>(); | ||
| 161 | for(D64 d64 : d64s){ | 164 | for(D64 d64 : d64s){ |
| 162 | - if(d64.getDeviceId().equals(device)){ | ||
| 163 | - //入库 | ||
| 164 | - if(d64.getRespAck() == null) | ||
| 165 | - directiveService.save64(d64); | ||
| 166 | - | ||
| 167 | - if(null != d64Map.remove(d64.getKey())) | ||
| 168 | - c64 ++; | ||
| 169 | - } | 165 | + if(d64.getDeviceId().equals(device)) |
| 166 | + rem64List.add(d64); | ||
| 167 | + } | ||
| 168 | + | ||
| 169 | + //清除64数据 | ||
| 170 | + for(D64 d64 : rem64List){ | ||
| 171 | + if(d64.getRespAck() == null) | ||
| 172 | + directiveService.save64(d64); | ||
| 173 | + | ||
| 174 | + if(null != d64Map.remove(d64.getKey())) | ||
| 175 | + c64 ++; | ||
| 170 | } | 176 | } |
| 171 | 177 | ||
| 172 | logger.info("清除64数据 ," + c64); | 178 | logger.info("清除64数据 ," + c64); |
src/main/java/com/bsth/data/pilot80/PilotReport.java
| @@ -277,7 +277,9 @@ public class PilotReport { | @@ -277,7 +277,9 @@ public class PilotReport { | ||
| 277 | } | 277 | } |
| 278 | 278 | ||
| 279 | public void clear(String lineCode){ | 279 | public void clear(String lineCode){ |
| 280 | + logger.info("清除 80数据 before: " + d80MultiMap.size()); | ||
| 280 | d80MultiMap.removeAll(lineCode); | 281 | d80MultiMap.removeAll(lineCode); |
| 282 | + logger.info("清除 80数据 after: " + d80MultiMap.size()); | ||
| 281 | } | 283 | } |
| 282 | 284 | ||
| 283 | public Collection<? extends D80> findByCar(String nbbm) { | 285 | public Collection<? extends D80> findByCar(String nbbm) { |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| 1 | package com.bsth.data.schedule; | 1 | package com.bsth.data.schedule; |
| 2 | 2 | ||
| 3 | +import java.text.ParseException; | ||
| 3 | import java.util.ArrayList; | 4 | import java.util.ArrayList; |
| 4 | import java.util.Collection; | 5 | import java.util.Collection; |
| 5 | import java.util.Collections; | 6 | import java.util.Collections; |
| @@ -220,11 +221,20 @@ public class DayOfSchedule implements CommandLineRunner { | @@ -220,11 +221,20 @@ public class DayOfSchedule implements CommandLineRunner { | ||
| 220 | * @Description: TODO(清理内存数据) | 221 | * @Description: TODO(清理内存数据) |
| 221 | */ | 222 | */ |
| 222 | public void clearRAMData(String lineCode) { | 223 | public void clearRAMData(String lineCode) { |
| 224 | + int count = 0; | ||
| 225 | + List<ScheduleRealInfo> remList = new ArrayList<>(); | ||
| 223 | Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); | 226 | Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); |
| 224 | for (ScheduleRealInfo sch : schs) { | 227 | for (ScheduleRealInfo sch : schs) { |
| 225 | if (sch.getXlBm().equals(lineCode)) | 228 | if (sch.getXlBm().equals(lineCode)) |
| 226 | - nbbmScheduleMap.remove(sch.getClZbh(), sch); | 229 | + remList.add(sch); |
| 227 | } | 230 | } |
| 231 | + | ||
| 232 | + for(ScheduleRealInfo sch : remList){ | ||
| 233 | + nbbmScheduleMap.remove(sch.getClZbh(), sch); | ||
| 234 | + count ++; | ||
| 235 | + } | ||
| 236 | + | ||
| 237 | + logger.info(lineCode + "排班清理 " + count); | ||
| 228 | } | 238 | } |
| 229 | 239 | ||
| 230 | /** | 240 | /** |
| @@ -265,6 +275,15 @@ public class DayOfSchedule implements CommandLineRunner { | @@ -265,6 +275,15 @@ public class DayOfSchedule implements CommandLineRunner { | ||
| 265 | for (ScheduleRealInfo sch : realList) { | 275 | for (ScheduleRealInfo sch : realList) { |
| 266 | sch.setScheduleDateStr(DateUtils.sdfyyyyMMdd.format(sch.getScheduleDate())); | 276 | sch.setScheduleDateStr(DateUtils.sdfyyyyMMdd.format(sch.getScheduleDate())); |
| 267 | sch.setRealExecDate(sch.getScheduleDateStr()); | 277 | sch.setRealExecDate(sch.getScheduleDateStr()); |
| 278 | + // 计划终点时间 | ||
| 279 | + if (sch.getBcsj() != null) { | ||
| 280 | + try{ | ||
| 281 | + sch.setZdsjT(DateUtils.sdfHHmm.parse(sch.getFcsj()).getTime() + (sch.getBcsj() * 60 * 1000)); | ||
| 282 | + sch.setZdsj(DateUtils.sdfHHmm.format(sch.getZdsjT())); | ||
| 283 | + }catch(ParseException pe){ | ||
| 284 | + logger.error("loadPlanSch... 计算终点时间失败..."); | ||
| 285 | + } | ||
| 286 | + } | ||
| 268 | } | 287 | } |
| 269 | } catch (Exception e) { | 288 | } catch (Exception e) { |
| 270 | logger.error("", e); | 289 | logger.error("", e); |
| @@ -584,4 +603,13 @@ public class DayOfSchedule implements CommandLineRunner { | @@ -584,4 +603,13 @@ public class DayOfSchedule implements CommandLineRunner { | ||
| 584 | } | 603 | } |
| 585 | return outList; | 604 | return outList; |
| 586 | } | 605 | } |
| 606 | + | ||
| 607 | + public ScheduleRealInfo delete(Long id) { | ||
| 608 | + ScheduleRealInfo sch = id2SchedulMap.get(id); | ||
| 609 | + if(!sch.isSflj()) | ||
| 610 | + return null; | ||
| 611 | + | ||
| 612 | + nbbmScheduleMap.remove(sch.getClZbh(), sch); | ||
| 613 | + return sch; | ||
| 614 | + } | ||
| 587 | } | 615 | } |
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
| @@ -87,7 +87,7 @@ public class SchAttrCalculator { | @@ -87,7 +87,7 @@ public class SchAttrCalculator { | ||
| 87 | * @Description: TODO(计算班次的起点应到时间,list 必须是同一辆车的班次) | 87 | * @Description: TODO(计算班次的起点应到时间,list 必须是同一辆车的班次) |
| 88 | */ | 88 | */ |
| 89 | public void calcQdzTimePlan(List<ScheduleRealInfo> list){ | 89 | public void calcQdzTimePlan(List<ScheduleRealInfo> list){ |
| 90 | - Collections.sort(list, new ScheduleComparator.FCSJ()); | 90 | + Collections.sort(list, new ScheduleComparator.FCNO()); |
| 91 | 91 | ||
| 92 | int len = list.size(); | 92 | int len = list.size(); |
| 93 | if(len == 0) | 93 | if(len == 0) |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| @@ -46,6 +46,7 @@ import com.bsth.security.util.SecurityUtils; | @@ -46,6 +46,7 @@ import com.bsth.security.util.SecurityUtils; | ||
| 46 | import com.bsth.service.SectionRouteService; | 46 | import com.bsth.service.SectionRouteService; |
| 47 | import com.bsth.service.impl.BaseServiceImpl; | 47 | import com.bsth.service.impl.BaseServiceImpl; |
| 48 | import com.bsth.service.realcontrol.ScheduleRealInfoService; | 48 | import com.bsth.service.realcontrol.ScheduleRealInfoService; |
| 49 | +import com.bsth.util.DateUtils; | ||
| 49 | import com.bsth.util.ReportRelatedUtils; | 50 | import com.bsth.util.ReportRelatedUtils; |
| 50 | import com.bsth.util.ReportUtils; | 51 | import com.bsth.util.ReportUtils; |
| 51 | import com.bsth.util.TimeUtils; | 52 | import com.bsth.util.TimeUtils; |
| @@ -304,32 +305,43 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -304,32 +305,43 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 304 | */ | 305 | */ |
| 305 | @Override | 306 | @Override |
| 306 | public Map<String, Object> save(ScheduleRealInfo t) { | 307 | public Map<String, Object> save(ScheduleRealInfo t) { |
| 307 | - SysUser user = SecurityUtils.getCurrentUser(); | ||
| 308 | - Date d = new Date(); | ||
| 309 | - | ||
| 310 | - t.setScheduleDate(d); | ||
| 311 | - t.setRealExecDate(sdfMonth.format(d)); | ||
| 312 | - t.setCreateBy(user); | ||
| 313 | - t.setSflj(true); | ||
| 314 | - Map<String, Object> map = super.save(t); | ||
| 315 | - | ||
| 316 | - // 加入缓存 | ||
| 317 | - dayOfSchedule.put(t); | ||
| 318 | - dayOfSchedule.calcQdzTimePlan(t.getClZbh()); | ||
| 319 | - //将该临加之后的班次作为更新返回页面 | ||
| 320 | - List<ScheduleRealInfo> list = dayOfSchedule.nextAll(t) | ||
| 321 | - ,rsList = null; | ||
| 322 | - | ||
| 323 | - for(ScheduleRealInfo sch : list){ | ||
| 324 | - if(sch.getId() == t.getId()) | ||
| 325 | - rsList = new ArrayList<>(); | 308 | + Map<String, Object> rs = new HashMap<>(); |
| 309 | + try{ | ||
| 310 | + SysUser user = SecurityUtils.getCurrentUser(); | ||
| 311 | + String schDate = DayOfSchedule.currSchDateMap.get(t.getXlBm()); | ||
| 312 | + | ||
| 313 | + t.setScheduleDateStr(schDate); | ||
| 314 | + t.setScheduleDate(DateUtils.sdfyyyyMMdd.parse(schDate)); | ||
| 315 | + t.setRealExecDate(schDate); | ||
| 316 | + t.setCreateBy(user); | ||
| 317 | + t.setSflj(true); | ||
| 318 | + //班次历时 | ||
| 319 | + t.setBcsj(DateUtils.calcHHmmDiff(t.getFcsj(), t.getZdsj()) / 1000 / 60); | ||
| 320 | + | ||
| 321 | + //实时入库 | ||
| 322 | + rs = super.save(t); | ||
| 323 | + // 加入缓存 | ||
| 324 | + dayOfSchedule.put(t); | ||
| 325 | + | ||
| 326 | + dayOfSchedule.calcQdzTimePlan(t.getClZbh()); | ||
| 327 | + //将该临加之后的班次作为更新返回页面 | ||
| 328 | + List<ScheduleRealInfo> list = dayOfSchedule.nextAll(t) | ||
| 329 | + ,rsList = null; | ||
| 326 | 330 | ||
| 327 | - if(rsList != null) | ||
| 328 | - rsList.add(sch); | 331 | + for(ScheduleRealInfo sch : list){ |
| 332 | + if(sch.getId() == t.getId()) | ||
| 333 | + rsList = new ArrayList<>(); | ||
| 334 | + | ||
| 335 | + if(rsList != null) | ||
| 336 | + rsList.add(sch); | ||
| 337 | + } | ||
| 338 | + | ||
| 339 | + rs.put("ups", rsList); | ||
| 340 | + }catch(Exception e){ | ||
| 341 | + logger.error("", e); | ||
| 342 | + rs.put("status", ResponseCode.ERROR); | ||
| 329 | } | 343 | } |
| 330 | - | ||
| 331 | - map.put("ups", rsList); | ||
| 332 | - return map; | 344 | + return rs; |
| 333 | } | 345 | } |
| 334 | 346 | ||
| 335 | @Override | 347 | @Override |
| @@ -1165,4 +1177,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1165,4 +1177,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1165 | public List<ScheduleRealInfo> realScheduleList(String line, String date) { | 1177 | public List<ScheduleRealInfo> realScheduleList(String line, String date) { |
| 1166 | return scheduleRealInfoRepository.scheduleByDateAndLine(line, date); | 1178 | return scheduleRealInfoRepository.scheduleByDateAndLine(line, date); |
| 1167 | } | 1179 | } |
| 1180 | + | ||
| 1181 | + @Override | ||
| 1182 | + public Map<String, Object> delete(Long id) { | ||
| 1183 | + Map<String, Object> rs = new HashMap<>(); | ||
| 1184 | + ScheduleRealInfo sch = dayOfSchedule.delete(id); | ||
| 1185 | + if(null != sch){ | ||
| 1186 | + rs = super.delete(id); | ||
| 1187 | + rs.put("t", sch); | ||
| 1188 | + } | ||
| 1189 | + else | ||
| 1190 | + rs.put("status", ResponseCode.ERROR); | ||
| 1191 | + | ||
| 1192 | + return rs; | ||
| 1193 | + } | ||
| 1168 | } | 1194 | } |
src/main/java/com/bsth/util/DateUtils.java
| @@ -129,4 +129,8 @@ public class DateUtils { | @@ -129,4 +129,8 @@ public class DateUtils { | ||
| 129 | } | 129 | } |
| 130 | return sdfyyyyMMdd.format(cal.getTime()); | 130 | return sdfyyyyMMdd.format(cal.getTime()); |
| 131 | } | 131 | } |
| 132 | + | ||
| 133 | + public static int calcHHmmDiff(String fcsj, String zdsj) throws ParseException { | ||
| 134 | + return (int) (sdfHHmm.parse(zdsj).getTime() - sdfHHmm.parse(fcsj).getTime()); | ||
| 135 | + } | ||
| 132 | } | 136 | } |
src/main/resources/ms-jdbc.properties
| 1 | -ms.mysql.driver= com.mysql.jdbc.Driver | ||
| 2 | -ms.mysql.url= jdbc:mysql://127.0.0.1:3306/ms?useUnicode=true&characterEncoding=utf-8 | ||
| 3 | -ms.mysql.username= root | ||
| 4 | -ms.mysql.password= panzhao | ||
| 5 | - | ||
| 6 | #ms.mysql.driver= com.mysql.jdbc.Driver | 1 | #ms.mysql.driver= com.mysql.jdbc.Driver |
| 7 | -#ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8 | 2 | +#ms.mysql.url= jdbc:mysql://192.168.168.201:3306/ms?useUnicode=true&characterEncoding=utf-8 |
| 8 | #ms.mysql.username= root | 3 | #ms.mysql.username= root |
| 9 | -#ms.mysql.password= root2jsp | ||
| 10 | \ No newline at end of file | 4 | \ No newline at end of file |
| 5 | +#ms.mysql.password= 123456 | ||
| 6 | + | ||
| 7 | +ms.mysql.driver= com.mysql.jdbc.Driver | ||
| 8 | +ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8 | ||
| 9 | +ms.mysql.username= root | ||
| 10 | +ms.mysql.password= root2jsp | ||
| 11 | \ No newline at end of file | 11 | \ No newline at end of file |
src/main/resources/static/index.html
| @@ -111,16 +111,27 @@ tr.row-active td { | @@ -111,16 +111,27 @@ tr.row-active td { | ||
| 111 | display: block !important; | 111 | display: block !important; |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | -.page-header.navbar .page-logo { | ||
| 115 | - width: 335px; | ||
| 116 | -} | ||
| 117 | - | ||
| 118 | .page-header.navbar .page-logo .logo-default { | 114 | .page-header.navbar .page-logo .logo-default { |
| 119 | margin: 0; | 115 | margin: 0; |
| 120 | } | 116 | } |
| 121 | .page-header.navbar .top-menu .navbar-nav>li.dropdown.open .dropdown-toggle { | 117 | .page-header.navbar .top-menu .navbar-nav>li.dropdown.open .dropdown-toggle { |
| 122 | background-color: #284a99; | 118 | background-color: #284a99; |
| 123 | } | 119 | } |
| 120 | +.page-header.navbar .page-logo{ | ||
| 121 | + padding-right: 10px; | ||
| 122 | +} | ||
| 123 | + | ||
| 124 | +.page-logo .logo-default.logo-default-text{ | ||
| 125 | + font-weight: 600; | ||
| 126 | + color: white !important; | ||
| 127 | + margin-top: 19px !important; | ||
| 128 | + font-size: 24px; | ||
| 129 | + text-decoration: none; | ||
| 130 | +} | ||
| 131 | +.page-logo .logo-default.logo-default-text:HOVER{ | ||
| 132 | + color: #dedede !important; | ||
| 133 | +} | ||
| 134 | + | ||
| 124 | </style> | 135 | </style> |
| 125 | 136 | ||
| 126 | <!-- ocLazyLoading载入文件的位置 --> | 137 | <!-- ocLazyLoading载入文件的位置 --> |
| @@ -128,12 +139,11 @@ tr.row-active td { | @@ -128,12 +139,11 @@ tr.row-active td { | ||
| 128 | 139 | ||
| 129 | </head> | 140 | </head> |
| 130 | <body class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed"> | 141 | <body class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed"> |
| 131 | - <div class="page-header navbar navbar-fixed-top" style="background: #23438e;"> | 142 | + <div class="page-header navbar navbar-fixed-top" style="background: linear-gradient(to bottom ,#124e78, #125688);"> |
| 132 | <div class="page-header-inner "> | 143 | <div class="page-header-inner "> |
| 133 | <!-- LOGO --> | 144 | <!-- LOGO --> |
| 134 | <div class="page-logo"> | 145 | <div class="page-logo"> |
| 135 | - <a href="index.html"> | ||
| 136 | - <img src="/assets/img/logo_text.png" alt="logo" class="logo-default" /> </a> | 146 | + <a href="index.html" class="logo-default logo-default-text" > 闵行公交调度系统 </a> |
| 137 | <div class="menu-toggler sidebar-toggler"> | 147 | <div class="menu-toggler sidebar-toggler"> |
| 138 | </div> | 148 | </div> |
| 139 | </div> | 149 | </div> |
| @@ -146,12 +156,12 @@ tr.row-active td { | @@ -146,12 +156,12 @@ tr.row-active td { | ||
| 146 | <li class="dropdown dropdown-extended dropdown-notification dropdown-dark" id="header_notification_bar"> | 156 | <li class="dropdown dropdown-extended dropdown-notification dropdown-dark" id="header_notification_bar"> |
| 147 | <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true"> | 157 | <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true"> |
| 148 | <i class="fa fa-bell"></i> | 158 | <i class="fa fa-bell"></i> |
| 149 | - <span class="badge badge-success"> 3 </span> | 159 | + <span class="badge badge-success"> 0 </span> |
| 150 | </a> | 160 | </a> |
| 151 | <ul class="dropdown-menu" style="max-width: 345px;width: 345px;"> | 161 | <ul class="dropdown-menu" style="max-width: 345px;width: 345px;"> |
| 152 | <li class="external"> | 162 | <li class="external"> |
| 153 | - <h3>今日 <span class="bold">318 条</span> 通知</h3> | ||
| 154 | - <a href="page_user_profile_1.html">查看全部</a> | 163 | + <h3>今日 <span class="bold">0 条</span> 通知</h3> |
| 164 | + <a href="javascript:;">查看全部</a> | ||
| 155 | </li> | 165 | </li> |
| 156 | <li> | 166 | <li> |
| 157 | <ul class="dropdown-menu-list scroller" style="height: 250px;" data-handle-color="#637283"> | 167 | <ul class="dropdown-menu-list scroller" style="height: 250px;" data-handle-color="#637283"> |
| @@ -279,7 +289,7 @@ tr.row-active td { | @@ -279,7 +289,7 @@ tr.row-active td { | ||
| 279 | <!-- PJAX --> | 289 | <!-- PJAX --> |
| 280 | <script src="/assets/plugins/jquery.pjax.js"></script> | 290 | <script src="/assets/plugins/jquery.pjax.js"></script> |
| 281 | <!-- layer 弹层 --> | 291 | <!-- layer 弹层 --> |
| 282 | -<script src="/assets/plugins/layer-v2.4/layer/layer.js" ></script> | 292 | +<script src="/assets/plugins/layer-v2.4/layer/layer.js" data-exclude=1></script> |
| 283 | <!-- jquery.purl URL解析 --> | 293 | <!-- jquery.purl URL解析 --> |
| 284 | <script src="/assets/plugins/purl.js"></script> | 294 | <script src="/assets/plugins/purl.js"></script> |
| 285 | <!-- jquery.serializejson JSON序列化插件 --> | 295 | <!-- jquery.serializejson JSON序列化插件 --> |
src/main/resources/static/pages/control/line/child_pages/child_task.html
| @@ -183,6 +183,7 @@ $(function(){ | @@ -183,6 +183,7 @@ $(function(){ | ||
| 183 | }); | 183 | }); |
| 184 | 184 | ||
| 185 | //主任务点击事件 | 185 | //主任务点击事件 |
| 186 | + var sch_remove = '<div class="sch_remove">×</div>'; | ||
| 186 | $('#childTaskDiv').on('click', '.mainTable tr', function(){ | 187 | $('#childTaskDiv').on('click', '.mainTable tr', function(){ |
| 187 | $mainTab.find('tr._active').removeClass('_active'); | 188 | $mainTab.find('tr._active').removeClass('_active'); |
| 188 | $(this).addClass('_active'); | 189 | $(this).addClass('_active'); |
| @@ -190,13 +191,24 @@ $(function(){ | @@ -190,13 +191,24 @@ $(function(){ | ||
| 190 | //显示班次详细 | 191 | //显示班次详细 |
| 191 | $.each(this.cells, function(i,cell){ | 192 | $.each(this.cells, function(i,cell){ |
| 192 | $('#mainDetailPabel input[data-cell='+i+']').val($.trim($(cell).text())); | 193 | $('#mainDetailPabel input[data-cell='+i+']').val($.trim($(cell).text())); |
| 193 | - }); | 194 | + }) |
| 195 | + var id = $(this).data('id'); | ||
| 196 | + //是否是临加班次 | ||
| 197 | + if(id){ | ||
| 198 | + var sch = _data.getSchedulById(id); | ||
| 199 | + if(sch && sch.sflj) | ||
| 200 | + $('#mainDetailPabel').append($(sch_remove).data('id', id)); | ||
| 201 | + else | ||
| 202 | + $('#mainDetailPabel .sch_remove').remove(); | ||
| 203 | + } | ||
| 204 | + | ||
| 205 | + //返回false 点击的是空班次 | ||
| 194 | if(!changeHandlerPanel(this)) | 206 | if(!changeHandlerPanel(this)) |
| 195 | return; | 207 | return; |
| 196 | 208 | ||
| 197 | - var id = $(this).data('id'); | ||
| 198 | - childTaskBtn(scheduleIdMap[id].bcType); | ||
| 199 | 209 | ||
| 210 | + childTaskBtn(scheduleIdMap[id].bcType); | ||
| 211 | + //刷新子任务列表 | ||
| 200 | refreshChildTasks(); | 212 | refreshChildTasks(); |
| 201 | }); | 213 | }); |
| 202 | 214 | ||
| @@ -388,7 +400,6 @@ $(function(){ | @@ -388,7 +400,6 @@ $(function(){ | ||
| 388 | var $tr = $('.mainTable tr[data-id]', '#childTaskDiv').eq(0); | 400 | var $tr = $('.mainTable tr[data-id]', '#childTaskDiv').eq(0); |
| 389 | if($tr.length > 0){ | 401 | if($tr.length > 0){ |
| 390 | var sch = _data.getSchedulById($tr.data('id')); | 402 | var sch = _data.getSchedulById($tr.data('id')); |
| 391 | - console.log(sch); | ||
| 392 | //默认车辆 | 403 | //默认车辆 |
| 393 | $('select[name=clZbh]', schAddPanel).val(sch.clZbh).trigger('change'); | 404 | $('select[name=clZbh]', schAddPanel).val(sch.clZbh).trigger('change'); |
| 394 | //默认驾驶员 | 405 | //默认驾驶员 |
| @@ -465,19 +476,15 @@ $(function(){ | @@ -465,19 +476,15 @@ $(function(){ | ||
| 465 | layer.msg('操作中...', {icon: 16,time:0}); | 476 | layer.msg('操作中...', {icon: 16,time:0}); |
| 466 | $post('/realSchedule', param, function(rs){ | 477 | $post('/realSchedule', param, function(rs){ |
| 467 | var sch = rs.t; | 478 | var sch = rs.t; |
| 468 | - //前端缓存更新 | ||
| 469 | - //scheduleLineMap[param.xlBm][param.lpName].push(sch); | ||
| 470 | - /* var ups = rs.ups; | ||
| 471 | - for(var i in ups){ | ||
| 472 | - _data.updateSchedule(ups[i]); | ||
| 473 | - } */ | ||
| 474 | //刷新表格 | 479 | //刷新表格 |
| 475 | - //_alone.updateTableBySch(sch); | ||
| 476 | - _alone.update2Table(sch.xlBm, sch); | ||
| 477 | - | 480 | + _alone.update2Table(sch.xlBm); |
| 478 | //关闭弹出层 | 481 | //关闭弹出层 |
| 479 | layer.closeAll(); | 482 | layer.closeAll(); |
| 480 | - layer.alert('临加班次成功!',{icon:1, shift: 5}); | 483 | + |
| 484 | + layer.alert('临加班次成功!',{icon:1, shift: 5, end: function(){ | ||
| 485 | + //定位到新的班次 | ||
| 486 | + _alone.goToSch(sch, true); | ||
| 487 | + }}); | ||
| 481 | }); | 488 | }); |
| 482 | }); | 489 | }); |
| 483 | 490 | ||
| @@ -496,6 +503,24 @@ $(function(){ | @@ -496,6 +503,24 @@ $(function(){ | ||
| 496 | return r.stationName; | 503 | return r.stationName; |
| 497 | } | 504 | } |
| 498 | } | 505 | } |
| 506 | + | ||
| 507 | + //删除临加班次 | ||
| 508 | + $('#childTaskDiv').on('click', '#mainDetailPabel .sch_remove', function(){ | ||
| 509 | + //alert('删除..' + $(this).data('id')); | ||
| 510 | + var id = $(this).data('id'); | ||
| 511 | + if(!id){ | ||
| 512 | + layer.alert('标识符无效!'); | ||
| 513 | + return; | ||
| 514 | + } | ||
| 515 | + removeConfirm('确定删除该班次信息?', '/realSchedule/' + id, function(rs){ | ||
| 516 | + //刷新表格 | ||
| 517 | + _alone.update2Table(rs.t.xlBm, function(){ | ||
| 518 | + //重新从_date.js获取数据 | ||
| 519 | + scheduleLineMap = _data.getLineLpMap(); | ||
| 520 | + refreshMainList(); | ||
| 521 | + }); | ||
| 522 | + }); | ||
| 523 | + }); | ||
| 499 | }); | 524 | }); |
| 500 | 525 | ||
| 501 | //刷新子任务表格 | 526 | //刷新子任务表格 |
src/main/resources/static/pages/control/line/css/lineControl.css
| @@ -1117,6 +1117,7 @@ height: 400px; | @@ -1117,6 +1117,7 @@ height: 400px; | ||
| 1117 | white-space: nowrap; | 1117 | white-space: nowrap; |
| 1118 | overflow: hidden; | 1118 | overflow: hidden; |
| 1119 | text-overflow: ellipsis; | 1119 | text-overflow: ellipsis; |
| 1120 | + position: relative; | ||
| 1120 | } | 1121 | } |
| 1121 | 1122 | ||
| 1122 | .pic-panel{ | 1123 | .pic-panel{ |
| @@ -1678,6 +1679,39 @@ height: 400px; | @@ -1678,6 +1679,39 @@ height: 400px; | ||
| 1678 | content: "临加班次"; | 1679 | content: "临加班次"; |
| 1679 | } | 1680 | } |
| 1680 | 1681 | ||
| 1682 | +/* #mainDetailPabel.close-sch:AFTER { | ||
| 1683 | + content: "×"; | ||
| 1684 | + position: absolute; | ||
| 1685 | + top: -11px; | ||
| 1686 | + right: 10px; | ||
| 1687 | + font-size: 24px; | ||
| 1688 | + font-weight: 700; | ||
| 1689 | + line-height: 1; | ||
| 1690 | + color: #908a8a; | ||
| 1691 | + padding: 0 0 0 4px; | ||
| 1692 | + background: #fff; | ||
| 1693 | + text-shadow: 0 1px 0 #fff; | ||
| 1694 | + cursor: pointer; | ||
| 1695 | +} */ | ||
| 1696 | + | ||
| 1697 | +#mainDetailPabel .sch_remove{ | ||
| 1698 | + position: absolute; | ||
| 1699 | + top: -11px; | ||
| 1700 | + right: 10px; | ||
| 1701 | + font-size: 24px; | ||
| 1702 | + font-weight: 700; | ||
| 1703 | + line-height: 1; | ||
| 1704 | + color: #908a8a; | ||
| 1705 | + padding: 0 0 0 4px; | ||
| 1706 | + background: #fff; | ||
| 1707 | + text-shadow: 0 1px 0 #fff; | ||
| 1708 | + cursor: pointer; | ||
| 1709 | +} | ||
| 1710 | + | ||
| 1711 | +#mainDetailPabel .sch_remove_icon:HOVER{ | ||
| 1712 | + color: #636262; | ||
| 1713 | +} | ||
| 1714 | + | ||
| 1681 | .custom-box-body .row{ | 1715 | .custom-box-body .row{ |
| 1682 | margin-left: 0px; | 1716 | margin-left: 0px; |
| 1683 | margin-top: 8px; | 1717 | margin-top: 8px; |
| @@ -2518,4 +2552,17 @@ span.nt-coord:before{ | @@ -2518,4 +2552,17 @@ span.nt-coord:before{ | ||
| 2518 | font-size: 13px; | 2552 | font-size: 13px; |
| 2519 | text-indent: 15px; | 2553 | text-indent: 15px; |
| 2520 | margin: 8px 0; | 2554 | margin: 8px 0; |
| 2555 | +} | ||
| 2556 | + | ||
| 2557 | +tr.linjia td:nth-child(1):AFTER { | ||
| 2558 | + content: "\f173"; | ||
| 2559 | + font: normal normal normal 14px/1 FontAwesome; | ||
| 2560 | + position: absolute; | ||
| 2561 | + right: 1px; | ||
| 2562 | + bottom: 2px; | ||
| 2563 | + font-size: 8px; | ||
| 2564 | + color: #ffffff; | ||
| 2565 | + padding: 1px 3px 1px 3px; | ||
| 2566 | + background: #e7505a; | ||
| 2567 | + border-radius: 15px; | ||
| 2521 | } | 2568 | } |
| 2522 | \ No newline at end of file | 2569 | \ No newline at end of file |
src/main/resources/static/pages/control/line/index.html
| @@ -228,8 +228,8 @@ function countDown(name){ | @@ -228,8 +228,8 @@ function countDown(name){ | ||
| 228 | 228 | ||
| 229 | <script> | 229 | <script> |
| 230 | var updateLog = { | 230 | var updateLog = { |
| 231 | - text: '<div class="updete_log"><p>1、调整实到实发匹配算法,调整了东川路电子围栏。</p><p>2、修复了烂班的班次指令会发送给驾驶员的问题。</p><p>3、修复了车辆到达终点后马上跳出下一班实发的问题。</p><p>4、修复轨迹回放缓冲区重复绘制问题。</p><p class="font-red">注意:进出场班次必须按照起点站划分上下行,如 兰坪路浦江路 ——> 停车场 必须是下行班次,否则该班次将不会有发车时间。</p></div>' | ||
| 232 | - ,title: '2016年8月25号凌晨更新日志' | 231 | + text: '<div class="updete_log"><p>1、调整停车场进出场算法。</p><p>2、临加班车可被删除,前提是还没有下发调度指令(即使下发失败)。</p><p class="font-red">注意:进出场班次必须按照起点站划分上下行,起点发出则上行,终点发出为下行,否则该班次将不会有发车时间。</p></div>' |
| 232 | + ,title: '2016年8月26号凌晨更新日志' | ||
| 233 | } | 233 | } |
| 234 | 234 | ||
| 235 | var lineCodes = '' //全部线路编码字符串,由data.js初始化 | 235 | var lineCodes = '' //全部线路编码字符串,由data.js初始化 |
src/main/resources/static/pages/control/line/js/alone.js
| @@ -56,8 +56,6 @@ var _alone = (function(){ | @@ -56,8 +56,6 @@ var _alone = (function(){ | ||
| 56 | var type = schedule.xlDir==0?'up':'down'; | 56 | var type = schedule.xlDir==0?'up':'down'; |
| 57 | calculateLineNo($('.pb-table[data-type='+type+']', tab)[0]); | 57 | calculateLineNo($('.pb-table[data-type='+type+']', tab)[0]); |
| 58 | 58 | ||
| 59 | - if(!isBatch) | ||
| 60 | - goToSch(schedule); | ||
| 61 | }, | 59 | }, |
| 62 | //刷新多个班次,刷新完数据再统一计算行号 | 60 | //刷新多个班次,刷新完数据再统一计算行号 |
| 63 | refreshScheduleArray: function(array){ | 61 | refreshScheduleArray: function(array){ |
| @@ -94,9 +92,12 @@ var _alone = (function(){ | @@ -94,9 +92,12 @@ var _alone = (function(){ | ||
| 94 | goToSch(schedule); | 92 | goToSch(schedule); |
| 95 | }); | 93 | }); |
| 96 | }, | 94 | }, |
| 97 | - update2Table: function(xlBm, schedule){ | 95 | + //刷新上行和下行2个表格 |
| 96 | + update2Table: function(xlBm, cb){ | ||
| 98 | //上行 | 97 | //上行 |
| 99 | $.get('/realSchedule/lineCode/' + xlBm, function(array){ | 98 | $.get('/realSchedule/lineCode/' + xlBm, function(array){ |
| 99 | + _data.clearByLineCode(xlBm); | ||
| 100 | + | ||
| 100 | //加入_data缓存 | 101 | //加入_data缓存 |
| 101 | $.each(array, function(){ | 102 | $.each(array, function(){ |
| 102 | _data.pushSchedule(this); | 103 | _data.pushSchedule(this); |
| @@ -114,13 +115,15 @@ var _alone = (function(){ | @@ -114,13 +115,15 @@ var _alone = (function(){ | ||
| 114 | //下行 | 115 | //下行 |
| 115 | tab.find('table[data-type=down] tbody').html(template('alone_plan_table_temp', {list: rs.down}))[0] | 116 | tab.find('table[data-type=down] tbody').html(template('alone_plan_table_temp', {list: rs.down}))[0] |
| 116 | ); | 117 | ); |
| 117 | - | ||
| 118 | //定位到指定的班次 | 118 | //定位到指定的班次 |
| 119 | - goToSch(schedule); | 119 | + //goToSch(schedule); |
| 120 | + | ||
| 121 | + cb && cb(); | ||
| 120 | }); | 122 | }); |
| 121 | }, | 123 | }, |
| 122 | //重新计算行号 | 124 | //重新计算行号 |
| 123 | calculateLineNo: calculateLineNo | 125 | calculateLineNo: calculateLineNo |
| 126 | + ,goToSch:goToSch | ||
| 124 | } | 127 | } |
| 125 | 128 | ||
| 126 | //获取班次所在table | 129 | //获取班次所在table |
| @@ -131,13 +134,16 @@ var _alone = (function(){ | @@ -131,13 +134,16 @@ var _alone = (function(){ | ||
| 131 | } | 134 | } |
| 132 | 135 | ||
| 133 | //定位到班次所在的行 | 136 | //定位到班次所在的行 |
| 134 | - function goToSch(sch){ | 137 | + function goToSch(sch, ignoreLock){ |
| 135 | var table = getTableBySch(sch); | 138 | var table = getTableBySch(sch); |
| 136 | if(!table.is(":visible")) | 139 | if(!table.is(":visible")) |
| 137 | return; | 140 | return; |
| 138 | - //表格被锁定 | ||
| 139 | - if(table.parents('.sch_table_panel').hasClass('lock')) | ||
| 140 | - return; | 141 | + |
| 142 | + if(!ignoreLock){ | ||
| 143 | + //表格被锁定 | ||
| 144 | + if(table.parents('.sch_table_panel').hasClass('lock')) | ||
| 145 | + return; | ||
| 146 | + } | ||
| 141 | 147 | ||
| 142 | var currTr = table.find('tr[data-id='+sch.id+']') | 148 | var currTr = table.find('tr[data-id='+sch.id+']') |
| 143 | ,half = table.parents('._body').height() / 2 | 149 | ,half = table.parents('._body').height() / 2 |
| @@ -165,9 +171,9 @@ var _alone = (function(){ | @@ -165,9 +171,9 @@ var _alone = (function(){ | ||
| 165 | } | 171 | } |
| 166 | 172 | ||
| 167 | function splitDir(list){ | 173 | function splitDir(list){ |
| 168 | - /*list.sort(function(a, b){ | ||
| 169 | - return a.fcno - b.fcno; | ||
| 170 | - });*/ | 174 | + list.sort(function(a, b){ |
| 175 | + return a.dfsjT - b.dfsjT; | ||
| 176 | + }); | ||
| 171 | var rs = {up: [], down: []}; | 177 | var rs = {up: [], down: []}; |
| 172 | $.each(list, function(){ | 178 | $.each(list, function(){ |
| 173 | if(this.xlDir == upCode) | 179 | if(this.xlDir == upCode) |
src/main/resources/static/pages/control/line/js/data.js
| @@ -82,12 +82,28 @@ var _data = (function(){ | @@ -82,12 +82,28 @@ var _data = (function(){ | ||
| 82 | array.sort(fcsjSort); | 82 | array.sort(fcsjSort); |
| 83 | return array; | 83 | return array; |
| 84 | }, | 84 | }, |
| 85 | + //清理线路下班次 | ||
| 86 | + clearByLineCode: function(lineCode){ | ||
| 87 | + for(var id in schedules){ | ||
| 88 | + if(schedules[id].xlBm == lineCode){ | ||
| 89 | + schedules[id] = null; | ||
| 90 | + delete schedules[id]; | ||
| 91 | + } | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + lineLpMap[lineCode] = {}; | ||
| 95 | + }, | ||
| 85 | //添加一个班次 | 96 | //添加一个班次 |
| 86 | pushSchedule: function(sch){ | 97 | pushSchedule: function(sch){ |
| 87 | //附加信息 | 98 | //附加信息 |
| 88 | attachInfo(sch); | 99 | attachInfo(sch); |
| 89 | schedules[sch.id] = sch; | 100 | schedules[sch.id] = sch; |
| 90 | - lineLpMap[sch.xlBm][sch.lpName].push(sch); | 101 | + |
| 102 | + var xl=sch.xlBm,lp=sch.lpName; | ||
| 103 | + if(!lineLpMap[xl][lp]) | ||
| 104 | + lineLpMap[xl][lp] = []; | ||
| 105 | + | ||
| 106 | + lineLpMap[xl][lp].push(sch); | ||
| 91 | }, | 107 | }, |
| 92 | //更新班次信息 | 108 | //更新班次信息 |
| 93 | updateSchedule: function(sch){ | 109 | updateSchedule: function(sch){ |
src/main/resources/static/pages/control/line/js/rightMenu.js
| @@ -388,7 +388,7 @@ var _menu = (function() { | @@ -388,7 +388,7 @@ var _menu = (function() { | ||
| 388 | if(rs.ts){ | 388 | if(rs.ts){ |
| 389 | msg_ct('实发调整成功!'); | 389 | msg_ct('实发调整成功!'); |
| 390 | //更新前端数据 | 390 | //更新前端数据 |
| 391 | - //_alone.refreshScheduleArray(rs.ts); | 391 | + _alone.refreshScheduleArray(rs.ts); |
| 392 | } | 392 | } |
| 393 | }); | 393 | }); |
| 394 | }); | 394 | }); |
src/main/resources/static/pages/control/line/temps/alone_tp.html
| @@ -104,7 +104,7 @@ | @@ -104,7 +104,7 @@ | ||
| 104 | <!-- 班次table --> | 104 | <!-- 班次table --> |
| 105 | <script id="alone_plan_table_temp" type="text/html"> | 105 | <script id="alone_plan_table_temp" type="text/html"> |
| 106 | {{each list as item i}} | 106 | {{each list as item i}} |
| 107 | - <tr data-id={{item.id}}> | 107 | +<tr data-id={{item.id}} class="{{if item.sflj}}linjia{{/if}}"> |
| 108 | <td name="lineNo"></td> | 108 | <td name="lineNo"></td> |
| 109 | <td data-name="lpName"><a href="javascript:;">{{item.lpName}}</a></td> | 109 | <td data-name="lpName"><a href="javascript:;">{{item.lpName}}</a></td> |
| 110 | 110 |
src/main/resources/static/pages/mapmonitor/real/js/playBack.js
| @@ -111,8 +111,10 @@ var playBack = (function() { | @@ -111,8 +111,10 @@ var playBack = (function() { | ||
| 111 | 111 | ||
| 112 | //添加进出站日志 | 112 | //添加进出站日志 |
| 113 | function addInOutText(gps){ | 113 | function addInOutText(gps){ |
| 114 | - var info = gps.inout_stop_info | ||
| 115 | - ,date = moment(gps.ts).format('HH:mm.ss') | 114 | + var info = gps.inout_stop_info; |
| 115 | + if(!info) | ||
| 116 | + return; | ||
| 117 | + var date = moment(gps.ts).format('HH:mm.ss') | ||
| 116 | ,clazz = info.inOut==1?'out':'in'; | 118 | ,clazz = info.inOut==1?'out':'in'; |
| 117 | if(!info) | 119 | if(!info) |
| 118 | return; | 120 | return; |