Commit 8aefd9d3173cd193af029656f6e192b1ba1aa84d
Merge branch 'master' of http://222.66.0.204:8090/panzhaov5/bsth_control
Showing
20 changed files
with
718 additions
and
629 deletions
src/main/java/com/bsth/StartCommand.java
| @@ -82,7 +82,7 @@ public class StartCommand implements CommandLineRunner{ | @@ -82,7 +82,7 @@ public class StartCommand implements CommandLineRunner{ | ||
| 82 | commonRefreshThread.start(); | 82 | commonRefreshThread.start(); |
| 83 | scheduler.scheduleWithFixedDelay(commonRefreshThread, HOUR_SECOND * 2 , HOUR_SECOND * 2, TimeUnit.SECONDS); | 83 | scheduler.scheduleWithFixedDelay(commonRefreshThread, HOUR_SECOND * 2 , HOUR_SECOND * 2, TimeUnit.SECONDS); |
| 84 | //等映射数据加载完......睡一会吧 | 84 | //等映射数据加载完......睡一会吧 |
| 85 | - Thread.sleep(3000); | 85 | + Thread.sleep(4000); |
| 86 | 86 | ||
| 87 | /** | 87 | /** |
| 88 | * GPS实时数据更新 线程 | 88 | * GPS实时数据更新 线程 |
src/main/java/com/bsth/service/impl/StationServiceImpl.java
| @@ -192,7 +192,7 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | @@ -192,7 +192,7 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | ||
| 192 | 192 | ||
| 193 | } | 193 | } |
| 194 | 194 | ||
| 195 | - if(resultLine.getStartStationName()==null){ | 195 | + if(resultLine.getStartStationName().equals("")){ |
| 196 | 196 | ||
| 197 | for(int k =0;k<sizeL;k++) { | 197 | for(int k =0;k<sizeL;k++) { |
| 198 | 198 | ||
| @@ -209,7 +209,7 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | @@ -209,7 +209,7 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | ||
| 209 | 209 | ||
| 210 | }; | 210 | }; |
| 211 | 211 | ||
| 212 | - if(resultLine.getEndStationName()==null) { | 212 | + if(resultLine.getEndStationName().equals("")) { |
| 213 | 213 | ||
| 214 | for(int k =0;k<sizeL;k++) { | 214 | for(int k =0;k<sizeL;k++) { |
| 215 | 215 | ||
| @@ -1334,153 +1334,8 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | @@ -1334,153 +1334,8 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | ||
| 1334 | if(!stationJSON.equals("")) { | 1334 | if(!stationJSON.equals("")) { |
| 1335 | 1335 | ||
| 1336 | // 保存站点与站点路由信息 | 1336 | // 保存站点与站点路由信息 |
| 1337 | - resultSaveMapm = savaStationAndStationRouteInfo( stationJSON, sectionDistance, sectionDuration, dbType,radius, shapesType, destroy, versions, sumUpOrDownMileage, directions, resultLine); | ||
| 1338 | - | ||
| 1339 | - /* | 1337 | + // resultSaveMapm = savaStationAndStationRouteInfo( stationJSON, sectionDistance, sectionDuration, dbType,radius, shapesType, destroy, versions, sumUpOrDownMileage, directions, resultLine); |
| 1340 | 1338 | ||
| 1341 | - JSONArray stationsArray = JSONArray.parseArray(stationJSON); | ||
| 1342 | - | ||
| 1343 | - for(int i = 0;i <stationsArray.size();i++) { | ||
| 1344 | - | ||
| 1345 | - // 站点名称 | ||
| 1346 | - String stationName = stationsArray.getJSONObject(i).equals("") ? "" : stationsArray.getJSONObject(i).get("name").toString(); | ||
| 1347 | - | ||
| 1348 | - String distanceStr = stationsArray.getJSONObject(i).equals("") ? "" : stationsArray.getJSONObject(i).get("distance").toString(); | ||
| 1349 | - | ||
| 1350 | - String durationStr = stationsArray.getJSONObject(i).equals("") ? "" : stationsArray.getJSONObject(i).get("duration").toString(); | ||
| 1351 | - | ||
| 1352 | - // 百度经纬度坐标 | ||
| 1353 | - String bJwpoints = ""; | ||
| 1354 | - | ||
| 1355 | - // 百度坐标经度 | ||
| 1356 | - String bLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lng").toString(); | ||
| 1357 | - | ||
| 1358 | - // 百度坐标纬度 | ||
| 1359 | - String bLatx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lat").toString(); | ||
| 1360 | - | ||
| 1361 | - // 百度经纬度 | ||
| 1362 | - bJwpoints = bLonx + " " + bLatx; | ||
| 1363 | - | ||
| 1364 | - List<Object[]> stationNameList = repository.findStationName(stationName); | ||
| 1365 | - | ||
| 1366 | - boolean isHave = isHaveStationname(bJwpoints,stationNameList); | ||
| 1367 | - | ||
| 1368 | - // 初始化站点对象 | ||
| 1369 | - Station arg0 = new Station(); | ||
| 1370 | - | ||
| 1371 | - // 站点编码 | ||
| 1372 | - long stationCode = 0L; | ||
| 1373 | - | ||
| 1374 | - if(isHave) { | ||
| 1375 | - | ||
| 1376 | - Integer stationId = Integer.parseInt(stationNameList.get(0)[1].toString()); | ||
| 1377 | - | ||
| 1378 | - arg0 = repository.findOne(stationId); | ||
| 1379 | - | ||
| 1380 | - stationCode = Integer.parseInt(arg0.getStationCod()); | ||
| 1381 | - | ||
| 1382 | - }else { | ||
| 1383 | - | ||
| 1384 | - stationCode = GetUIDAndCode.getStationId(); | ||
| 1385 | - | ||
| 1386 | - int stationId = (int) (stationCode); | ||
| 1387 | - | ||
| 1388 | - arg0.setId(stationId); | ||
| 1389 | - | ||
| 1390 | - arg0.setStationName(stationName); | ||
| 1391 | - | ||
| 1392 | - // 原坐标类型 | ||
| 1393 | - arg0.setDbType(dbType); | ||
| 1394 | - | ||
| 1395 | - // 站点地理位置WGS坐标经度 | ||
| 1396 | - String gLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("WGSpotion").toString()).get("Lng").toString(); | ||
| 1397 | - arg0.setgLonx(Float.parseFloat(gLonx)); | ||
| 1398 | - | ||
| 1399 | - // 站点地理位置WGS坐标纬度 | ||
| 1400 | - String gLaty = JSONObject.parseObject(stationsArray.getJSONObject(i).get("WGSpotion").toString()).get("Lat").toString(); | ||
| 1401 | - arg0.setgLaty(Float.parseFloat(gLaty)); | ||
| 1402 | - | ||
| 1403 | - // 半径 | ||
| 1404 | - int radius = map.get("radius").equals("") ? 0 : Integer.parseInt(map.get("radius").toString()); | ||
| 1405 | - arg0.setRadius(radius); | ||
| 1406 | - | ||
| 1407 | - // 图形类型 | ||
| 1408 | - String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString(); | ||
| 1409 | - arg0.setShapesType(shapesType); | ||
| 1410 | - | ||
| 1411 | - // 站点编码 | ||
| 1412 | - arg0.setStationCod(String.valueOf(stationCode)); | ||
| 1413 | - | ||
| 1414 | - // 是否想撤销 | ||
| 1415 | - arg0.setDestroy(destroy); | ||
| 1416 | - | ||
| 1417 | - // 版本号 | ||
| 1418 | - arg0.setVersions(versions); | ||
| 1419 | - | ||
| 1420 | - arg0.setbJwpoints(bJwpoints); | ||
| 1421 | - | ||
| 1422 | - // 插入站点信息 | ||
| 1423 | - repository.save(arg0); | ||
| 1424 | - | ||
| 1425 | - | ||
| 1426 | - // 站点路由对象 | ||
| 1427 | - StationRoute route = new StationRoute(); | ||
| 1428 | - | ||
| 1429 | - // 站点名称 | ||
| 1430 | - route.setStationName(stationName); | ||
| 1431 | - | ||
| 1432 | - route.setDistances(distance); | ||
| 1433 | - | ||
| 1434 | - route.setToTime(duration); | ||
| 1435 | - | ||
| 1436 | - route.setDestroy(destroy); | ||
| 1437 | - | ||
| 1438 | - // 站点编码 | ||
| 1439 | - route.setStationCode(arg0.getStationCod()); | ||
| 1440 | - | ||
| 1441 | - // 站点序号 | ||
| 1442 | - route.setStationRouteCode((i+1)*100); | ||
| 1443 | - | ||
| 1444 | - // 站点类型 | ||
| 1445 | - if(i==0) { | ||
| 1446 | - | ||
| 1447 | - // 起始站 | ||
| 1448 | - route.setStationMark("B"); | ||
| 1449 | - | ||
| 1450 | - }else if(i==stationsArray.size()-1) { | ||
| 1451 | - | ||
| 1452 | - // 终点站 | ||
| 1453 | - route.setStationMark("E"); | ||
| 1454 | - | ||
| 1455 | - }else { | ||
| 1456 | - | ||
| 1457 | - // 中途站 | ||
| 1458 | - route.setStationMark("Z"); | ||
| 1459 | - | ||
| 1460 | - } | ||
| 1461 | - | ||
| 1462 | - // 版本号 | ||
| 1463 | - route.setVersions(versions); | ||
| 1464 | - | ||
| 1465 | - // 站点ID | ||
| 1466 | - route.setStation(arg0); | ||
| 1467 | - | ||
| 1468 | - // 方向 | ||
| 1469 | - route.setDirections(directions); | ||
| 1470 | - | ||
| 1471 | - // 线路ID | ||
| 1472 | - route.setLine(resultLine); | ||
| 1473 | - | ||
| 1474 | - // 线路编码 | ||
| 1475 | - route.setLineCode(resultLine.getLineCode()); | ||
| 1476 | - | ||
| 1477 | - | ||
| 1478 | - // 插入站点路由信息 | ||
| 1479 | - routeRepository.save(route); | ||
| 1480 | - | ||
| 1481 | - } | ||
| 1482 | - } | ||
| 1483 | - */ | ||
| 1484 | } | 1339 | } |
| 1485 | 1340 | ||
| 1486 | // 路段长度 | 1341 | // 路段长度 |
| @@ -1492,7 +1347,7 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | @@ -1492,7 +1347,7 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | ||
| 1492 | // 如果路段信息JSON字符串不为空 | 1347 | // 如果路段信息JSON字符串不为空 |
| 1493 | if(!sectionJSON.equals("")) { | 1348 | if(!sectionJSON.equals("")) { |
| 1494 | 1349 | ||
| 1495 | - manualSaveSectionAndSectionRoute(sectionJSON, speedLimitStr, sectionDistance, sectionDuration, dbType, versions, resultLine, destroy, directions); | 1350 | + // manualSaveSectionAndSectionRoute(sectionJSON, speedLimitStr, sectionDistance, sectionDuration, dbType, versions, resultLine, destroy, directions); |
| 1496 | 1351 | ||
| 1497 | } | 1352 | } |
| 1498 | 1353 | ||
| @@ -1504,11 +1359,11 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | @@ -1504,11 +1359,11 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem | ||
| 1504 | sumUpOrDownMileage = s.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); | 1359 | sumUpOrDownMileage = s.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| 1505 | 1360 | ||
| 1506 | // 更新里程 | 1361 | // 更新里程 |
| 1507 | - updateLineInfoUpOrDownMileage( resultLine , directions, sumUpOrDownMileage); | 1362 | + // updateLineInfoUpOrDownMileage( resultLine , directions, sumUpOrDownMileage); |
| 1508 | 1363 | ||
| 1509 | if(directions==0) { | 1364 | if(directions==0) { |
| 1510 | 1365 | ||
| 1511 | - lineUpdateStationName(resultLine); | 1366 | + // lineUpdateStationName(resultLine); |
| 1512 | 1367 | ||
| 1513 | } | 1368 | } |
| 1514 | 1369 |
src/main/java/com/bsth/vehicle/directive/buffer/DirectiveBuffer.java
| @@ -5,6 +5,7 @@ import java.util.Calendar; | @@ -5,6 +5,7 @@ import java.util.Calendar; | ||
| 5 | import java.util.Collection; | 5 | import java.util.Collection; |
| 6 | import java.util.Comparator; | 6 | import java.util.Comparator; |
| 7 | import java.util.HashMap; | 7 | import java.util.HashMap; |
| 8 | +import java.util.Iterator; | ||
| 8 | import java.util.LinkedList; | 9 | import java.util.LinkedList; |
| 9 | import java.util.List; | 10 | import java.util.List; |
| 10 | import java.util.Map; | 11 | import java.util.Map; |
| @@ -19,6 +20,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo; | @@ -19,6 +20,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 19 | import com.bsth.service.realcontrol.buffer.ScheduleBuffer; | 20 | import com.bsth.service.realcontrol.buffer.ScheduleBuffer; |
| 20 | import com.bsth.vehicle.common.CommonMapped; | 21 | import com.bsth.vehicle.common.CommonMapped; |
| 21 | import com.bsth.vehicle.directive.MsgIdGenerator; | 22 | import com.bsth.vehicle.directive.MsgIdGenerator; |
| 23 | +import com.bsth.vehicle.directive.entity.Directive; | ||
| 22 | import com.bsth.vehicle.directive.entity.Directive60; | 24 | import com.bsth.vehicle.directive.entity.Directive60; |
| 23 | import com.bsth.vehicle.directive.entity.DirectiveReply; | 25 | import com.bsth.vehicle.directive.entity.DirectiveReply; |
| 24 | import com.bsth.vehicle.directive.entity.Directive80; | 26 | import com.bsth.vehicle.directive.entity.Directive80; |
| @@ -301,6 +303,8 @@ public class DirectiveBuffer { | @@ -301,6 +303,8 @@ public class DirectiveBuffer { | ||
| 301 | directiveMap.put(d.getMsgId(), d); | 303 | directiveMap.put(d.getMsgId(), d); |
| 302 | } | 304 | } |
| 303 | 305 | ||
| 306 | + System.out.println(directiveMap.values()); | ||
| 307 | + | ||
| 304 | //恢复80驾驶员上报 | 308 | //恢复80驾驶员上报 |
| 305 | List<Directive80> d80List = d80Repository.findByGtTime(st); | 309 | List<Directive80> d80List = d80Repository.findByGtTime(st); |
| 306 | 310 | ||
| @@ -341,8 +345,8 @@ public class DirectiveBuffer { | @@ -341,8 +345,8 @@ public class DirectiveBuffer { | ||
| 341 | * @Description: TODO(获取缓存里的全部指令) | 345 | * @Description: TODO(获取缓存里的全部指令) |
| 342 | * @throws | 346 | * @throws |
| 343 | */ | 347 | */ |
| 344 | - public static List<Object> findAll(){ | ||
| 345 | - List<Object> all = new ArrayList<>(); | 348 | + public static List<Directive> findAll(){ |
| 349 | + List<Directive> all = new ArrayList<>(); | ||
| 346 | //60 | 350 | //60 |
| 347 | all.addAll(directiveMap.values()); | 351 | all.addAll(directiveMap.values()); |
| 348 | //64 | 352 | //64 |
| @@ -350,23 +354,51 @@ public class DirectiveBuffer { | @@ -350,23 +354,51 @@ public class DirectiveBuffer { | ||
| 350 | return all; | 354 | return all; |
| 351 | } | 355 | } |
| 352 | 356 | ||
| 353 | - public static class DComparator implements Comparator<Object>{ | ||
| 354 | - | ||
| 355 | - @Override | ||
| 356 | - public int compare(Object o1, Object o2) { | ||
| 357 | - Long t1,t2; | ||
| 358 | - if(o1 instanceof Directive60) | ||
| 359 | - t1 = ((Directive60)o1).getTimestamp(); | ||
| 360 | - else | ||
| 361 | - t1 = ((Directive64)o1).getTimestamp(); | 357 | + /** |
| 358 | + * | ||
| 359 | + * @Title: findDispatch | ||
| 360 | + * @Description: TODO(获取缓存里的调度指令) | ||
| 361 | + * @throws | ||
| 362 | + */ | ||
| 363 | + public static List<Directive> findDispatch(){ | ||
| 364 | + List<Directive> rs = new ArrayList<>(); | ||
| 365 | + for(Directive60 d60 : directiveMap.values()){ | ||
| 366 | + if(d60.isDispatch()) | ||
| 367 | + rs.add(d60); | ||
| 368 | + } | ||
| 362 | 369 | ||
| 363 | - if(o2 instanceof Directive60) | ||
| 364 | - t2 = ((Directive60)o2).getTimestamp(); | ||
| 365 | - else | ||
| 366 | - t2 = ((Directive64)o2).getTimestamp(); | 370 | + return rs; |
| 371 | + } | ||
| 372 | + | ||
| 373 | + /** | ||
| 374 | + * | ||
| 375 | + * @Title: findDispatch | ||
| 376 | + * @Description: TODO(根据dispatchInstruct获取非调度指令) | ||
| 377 | + * @throws | ||
| 378 | + */ | ||
| 379 | + public static List<Directive> findByDispatchInstruct(short dispatchInstruct){ | ||
| 380 | + List<Directive> rs = new ArrayList<>(); | ||
| 381 | + for(Directive60 d60 : directiveMap.values()){ | ||
| 382 | + if(d60.getData() != null && d60.getData().getDispatchInstruct() == dispatchInstruct | ||
| 383 | + && !d60.isDispatch()) | ||
| 384 | + rs.add(d60); | ||
| 385 | + } | ||
| 367 | 386 | ||
| 368 | - return (int) (t2 - t1); | 387 | + return rs; |
| 388 | + } | ||
| 389 | + | ||
| 390 | + public static class DComparator implements Comparator<Directive>{ | ||
| 391 | + | ||
| 392 | + @Override | ||
| 393 | + public int compare(Directive o1, Directive o2) { | ||
| 394 | + return (int) (o2.getTimestamp() - o1.getTimestamp()); | ||
| 369 | } | 395 | } |
| 370 | 396 | ||
| 371 | } | 397 | } |
| 398 | + | ||
| 399 | + public static List<Directive> findLineChange() { | ||
| 400 | + List<Directive> rs = new ArrayList<>(); | ||
| 401 | + rs.addAll(changeMap.values()); | ||
| 402 | + return rs; | ||
| 403 | + } | ||
| 372 | } | 404 | } |
src/main/java/com/bsth/vehicle/directive/controller/DirectiveController.java
| @@ -110,7 +110,7 @@ public class DirectiveController { | @@ -110,7 +110,7 @@ public class DirectiveController { | ||
| 110 | * @throws | 110 | * @throws |
| 111 | */ | 111 | */ |
| 112 | @RequestMapping(value = "/list", method = RequestMethod.GET) | 112 | @RequestMapping(value = "/list", method = RequestMethod.GET) |
| 113 | - public List<Object> findDirective(@RequestParam String nbbm,@RequestParam int dType | 113 | + public Map<String, Object> findDirective(String nbbm,@RequestParam int dType |
| 114 | , @RequestParam(defaultValue = "0") int page, | 114 | , @RequestParam(defaultValue = "0") int page, |
| 115 | @RequestParam(defaultValue = "10") int size){ | 115 | @RequestParam(defaultValue = "10") int size){ |
| 116 | 116 |
src/main/java/com/bsth/vehicle/directive/entity/Directive.java
0 → 100644
| 1 | +package com.bsth.vehicle.directive.entity; | ||
| 2 | + | ||
| 3 | +import javax.persistence.MappedSuperclass; | ||
| 4 | +import javax.persistence.Transient; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * | ||
| 8 | + * @ClassName: Directive | ||
| 9 | + * @Description: TODO(指令基础类) | ||
| 10 | + * @author PanZhao | ||
| 11 | + * @date 2016年7月31日 下午8:35:56 | ||
| 12 | + * | ||
| 13 | + */ | ||
| 14 | +@MappedSuperclass | ||
| 15 | +public class Directive { | ||
| 16 | + | ||
| 17 | + /** | ||
| 18 | + * 一级协议 | ||
| 19 | + */ | ||
| 20 | + protected short operCode; | ||
| 21 | + | ||
| 22 | + /** | ||
| 23 | + * 设备号 | ||
| 24 | + */ | ||
| 25 | + protected String deviceId; | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * 时间戳 | ||
| 29 | + */ | ||
| 30 | + protected Long timestamp; | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 时间 HH:mm | ||
| 34 | + */ | ||
| 35 | + @Transient | ||
| 36 | + private String timeHHmm; | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * 车辆内部编码 | ||
| 40 | + */ | ||
| 41 | + @Transient | ||
| 42 | + private String nbbm; | ||
| 43 | + | ||
| 44 | + private String errorText; | ||
| 45 | + | ||
| 46 | + private int httpCode; | ||
| 47 | + | ||
| 48 | + public short getOperCode() { | ||
| 49 | + return operCode; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + public void setOperCode(short operCode) { | ||
| 53 | + this.operCode = operCode; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public String getDeviceId() { | ||
| 57 | + return deviceId; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + public void setDeviceId(String deviceId) { | ||
| 61 | + this.deviceId = deviceId; | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + public Long getTimestamp() { | ||
| 65 | + return timestamp; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + public void setTimestamp(Long timestamp) { | ||
| 69 | + this.timestamp = timestamp; | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + public String getTimeHHmm() { | ||
| 73 | + return timeHHmm; | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + public void setTimeHHmm(String timeHHmm) { | ||
| 77 | + this.timeHHmm = timeHHmm; | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + public String getNbbm() { | ||
| 81 | + return nbbm; | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + public void setNbbm(String nbbm) { | ||
| 85 | + this.nbbm = nbbm; | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + public String getErrorText() { | ||
| 89 | + return errorText; | ||
| 90 | + } | ||
| 91 | + | ||
| 92 | + public void setErrorText(String errorText) { | ||
| 93 | + this.errorText = errorText; | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + public int getHttpCode() { | ||
| 97 | + return httpCode; | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + public void setHttpCode(int httpCode) { | ||
| 101 | + this.httpCode = httpCode; | ||
| 102 | + } | ||
| 103 | +} |
src/main/java/com/bsth/vehicle/directive/entity/Directive60.java
| @@ -2,14 +2,19 @@ package com.bsth.vehicle.directive.entity; | @@ -2,14 +2,19 @@ package com.bsth.vehicle.directive.entity; | ||
| 2 | 2 | ||
| 3 | import javax.persistence.Embeddable; | 3 | import javax.persistence.Embeddable; |
| 4 | import javax.persistence.Entity; | 4 | import javax.persistence.Entity; |
| 5 | +import javax.persistence.FetchType; | ||
| 5 | import javax.persistence.GeneratedValue; | 6 | import javax.persistence.GeneratedValue; |
| 6 | import javax.persistence.Id; | 7 | import javax.persistence.Id; |
| 7 | import javax.persistence.ManyToOne; | 8 | import javax.persistence.ManyToOne; |
| 9 | +import javax.persistence.NamedAttributeNode; | ||
| 10 | +import javax.persistence.NamedEntityGraph; | ||
| 11 | +import javax.persistence.NamedEntityGraphs; | ||
| 8 | import javax.persistence.Table; | 12 | import javax.persistence.Table; |
| 9 | import javax.persistence.Transient; | 13 | import javax.persistence.Transient; |
| 10 | 14 | ||
| 11 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 15 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 12 | import com.bsth.entity.sys.SysUser; | 16 | import com.bsth.entity.sys.SysUser; |
| 17 | +import com.fasterxml.jackson.annotation.JsonIgnore; | ||
| 13 | 18 | ||
| 14 | 19 | ||
| 15 | /** | 20 | /** |
| @@ -22,35 +27,23 @@ import com.bsth.entity.sys.SysUser; | @@ -22,35 +27,23 @@ import com.bsth.entity.sys.SysUser; | ||
| 22 | */ | 27 | */ |
| 23 | @Entity | 28 | @Entity |
| 24 | @Table(name = "bsth_v_directive_60") | 29 | @Table(name = "bsth_v_directive_60") |
| 25 | -public class Directive60 { | 30 | +@NamedEntityGraphs({ |
| 31 | + @NamedEntityGraph(name = "directive60_sch", attributeNodes = { | ||
| 32 | + @NamedAttributeNode("sch") | ||
| 33 | + }) | ||
| 34 | +}) | ||
| 35 | +public class Directive60 extends Directive{ | ||
| 26 | 36 | ||
| 27 | @Id | 37 | @Id |
| 28 | @GeneratedValue | 38 | @GeneratedValue |
| 29 | private Integer id; | 39 | private Integer id; |
| 30 | 40 | ||
| 31 | /** | 41 | /** |
| 32 | - * 一级协议 | ||
| 33 | - */ | ||
| 34 | - private short operCode; | ||
| 35 | - | ||
| 36 | - /** | ||
| 37 | * 数据 | 42 | * 数据 |
| 38 | */ | 43 | */ |
| 39 | private DirectiveData data; | 44 | private DirectiveData data; |
| 40 | 45 | ||
| 41 | /** | 46 | /** |
| 42 | - * 设备号 | ||
| 43 | - */ | ||
| 44 | - @Transient | ||
| 45 | - private String deviceId; | ||
| 46 | - | ||
| 47 | - /** | ||
| 48 | - * 时间戳 | ||
| 49 | - */ | ||
| 50 | - @Transient | ||
| 51 | - private Long timestamp; | ||
| 52 | - | ||
| 53 | - /** | ||
| 54 | * 唯一标识 | 47 | * 唯一标识 |
| 55 | */ | 48 | */ |
| 56 | @Transient | 49 | @Transient |
| @@ -75,7 +68,8 @@ public class Directive60 { | @@ -75,7 +68,8 @@ public class Directive60 { | ||
| 75 | /** | 68 | /** |
| 76 | * 相关联的班次 | 69 | * 相关联的班次 |
| 77 | */ | 70 | */ |
| 78 | - @ManyToOne | 71 | + @JsonIgnore |
| 72 | + @ManyToOne(fetch = FetchType.LAZY) | ||
| 79 | private ScheduleRealInfo sch; | 73 | private ScheduleRealInfo sch; |
| 80 | 74 | ||
| 81 | /** | 75 | /** |
| @@ -90,9 +84,11 @@ public class Directive60 { | @@ -90,9 +84,11 @@ public class Directive60 { | ||
| 90 | private short companyCode; | 84 | private short companyCode; |
| 91 | 85 | ||
| 92 | // 设备号 | 86 | // 设备号 |
| 87 | + @Transient | ||
| 93 | private String deviceId; | 88 | private String deviceId; |
| 94 | 89 | ||
| 95 | // 时间戳 | 90 | // 时间戳 |
| 91 | + @Transient | ||
| 96 | private Long timestamp; | 92 | private Long timestamp; |
| 97 | 93 | ||
| 98 | // 保留 默认0 | 94 | // 保留 默认0 |
| @@ -217,28 +213,31 @@ public class Directive60 { | @@ -217,28 +213,31 @@ public class Directive60 { | ||
| 217 | this.data = data; | 213 | this.data = data; |
| 218 | } | 214 | } |
| 219 | 215 | ||
| 220 | - public String getDeviceId() { | ||
| 221 | - return deviceId; | ||
| 222 | - } | ||
| 223 | - | ||
| 224 | - public void setDeviceId(String deviceId) { | ||
| 225 | - this.deviceId = deviceId; | 216 | + public Integer getMsgId() { |
| 217 | + if(this.msgId != null) | ||
| 218 | + return this.msgId; | ||
| 219 | + else | ||
| 220 | + return this.getData().getMsgId(); | ||
| 226 | } | 221 | } |
| 227 | 222 | ||
| 228 | - public Long getTimestamp() { | ||
| 229 | - return timestamp; | 223 | + public void setMsgId(Integer msgId) { |
| 224 | + this.msgId = msgId; | ||
| 230 | } | 225 | } |
| 231 | - | 226 | + |
| 227 | + @Override | ||
| 232 | public void setTimestamp(Long timestamp) { | 228 | public void setTimestamp(Long timestamp) { |
| 229 | + if(this.data != null) | ||
| 230 | + this.data.setTimestamp(timestamp); | ||
| 231 | + | ||
| 233 | this.timestamp = timestamp; | 232 | this.timestamp = timestamp; |
| 234 | } | 233 | } |
| 235 | - | ||
| 236 | - public Integer getMsgId() { | ||
| 237 | - return msgId; | ||
| 238 | - } | ||
| 239 | - | ||
| 240 | - public void setMsgId(Integer msgId) { | ||
| 241 | - this.msgId = msgId; | 234 | + |
| 235 | + @Override | ||
| 236 | + public void setDeviceId(String deviceId) { | ||
| 237 | + if(this.data != null) | ||
| 238 | + this.data.setDeviceId(deviceId); | ||
| 239 | + | ||
| 240 | + this.deviceId = deviceId; | ||
| 242 | } | 241 | } |
| 243 | 242 | ||
| 244 | public Short getReply46() { | 243 | public Short getReply46() { |
src/main/java/com/bsth/vehicle/directive/entity/Directive64.java
| @@ -17,29 +17,13 @@ import javax.persistence.Id; | @@ -17,29 +17,13 @@ import javax.persistence.Id; | ||
| 17 | */ | 17 | */ |
| 18 | @Entity | 18 | @Entity |
| 19 | @Table(name = "bsth_v_directive_64") | 19 | @Table(name = "bsth_v_directive_64") |
| 20 | -public class Directive64 { | 20 | +public class Directive64 extends Directive{ |
| 21 | 21 | ||
| 22 | @Id | 22 | @Id |
| 23 | @GeneratedValue | 23 | @GeneratedValue |
| 24 | private Integer id; | 24 | private Integer id; |
| 25 | 25 | ||
| 26 | /** | 26 | /** |
| 27 | - * 设备编号 | ||
| 28 | - */ | ||
| 29 | - @Transient | ||
| 30 | - private String deviceId; | ||
| 31 | - | ||
| 32 | - /** | ||
| 33 | - * 时间戳(ms) | ||
| 34 | - */ | ||
| 35 | - private Long timestamp; | ||
| 36 | - | ||
| 37 | - /** | ||
| 38 | - * 一级协议 | ||
| 39 | - */ | ||
| 40 | - private Short operCode; | ||
| 41 | - | ||
| 42 | - /** | ||
| 43 | * 设备响应应答字 | 27 | * 设备响应应答字 |
| 44 | * 0x06同意 0x15不同意 | 28 | * 0x06同意 0x15不同意 |
| 45 | */ | 29 | */ |
| @@ -52,6 +36,7 @@ public class Directive64 { | @@ -52,6 +36,7 @@ public class Directive64 { | ||
| 52 | 36 | ||
| 53 | private Short cityCode; | 37 | private Short cityCode; |
| 54 | 38 | ||
| 39 | + @Transient | ||
| 55 | private String deviceId; | 40 | private String deviceId; |
| 56 | 41 | ||
| 57 | private String lineId; | 42 | private String lineId; |
| @@ -89,30 +74,6 @@ public class Directive64 { | @@ -89,30 +74,6 @@ public class Directive64 { | ||
| 89 | this.id = id; | 74 | this.id = id; |
| 90 | } | 75 | } |
| 91 | 76 | ||
| 92 | - public String getDeviceId() { | ||
| 93 | - return deviceId; | ||
| 94 | - } | ||
| 95 | - | ||
| 96 | - public void setDeviceId(String deviceId) { | ||
| 97 | - this.deviceId = deviceId; | ||
| 98 | - } | ||
| 99 | - | ||
| 100 | - public Long getTimestamp() { | ||
| 101 | - return timestamp; | ||
| 102 | - } | ||
| 103 | - | ||
| 104 | - public void setTimestamp(Long timestamp) { | ||
| 105 | - this.timestamp = timestamp; | ||
| 106 | - } | ||
| 107 | - | ||
| 108 | - public Short getOperCode() { | ||
| 109 | - return operCode; | ||
| 110 | - } | ||
| 111 | - | ||
| 112 | - public void setOperCode(Short operCode) { | ||
| 113 | - this.operCode = operCode; | ||
| 114 | - } | ||
| 115 | - | ||
| 116 | public LineChangeData getData() { | 77 | public LineChangeData getData() { |
| 117 | return data; | 78 | return data; |
| 118 | } | 79 | } |
| @@ -128,4 +89,12 @@ public class Directive64 { | @@ -128,4 +89,12 @@ public class Directive64 { | ||
| 128 | public void setRespAck(Short respAck) { | 89 | public void setRespAck(Short respAck) { |
| 129 | this.respAck = respAck; | 90 | this.respAck = respAck; |
| 130 | } | 91 | } |
| 92 | + | ||
| 93 | + @Override | ||
| 94 | + public void setDeviceId(String deviceId) { | ||
| 95 | + if(this.data != null) | ||
| 96 | + this.data.setDeviceId(deviceId); | ||
| 97 | + | ||
| 98 | + this.deviceId = deviceId; | ||
| 99 | + } | ||
| 131 | } | 100 | } |
src/main/java/com/bsth/vehicle/directive/repository/Directive60Repository.java
| @@ -2,6 +2,10 @@ package com.bsth.vehicle.directive.repository; | @@ -2,6 +2,10 @@ package com.bsth.vehicle.directive.repository; | ||
| 2 | 2 | ||
| 3 | import java.util.List; | 3 | import java.util.List; |
| 4 | 4 | ||
| 5 | +import org.springframework.data.domain.Page; | ||
| 6 | +import org.springframework.data.domain.Pageable; | ||
| 7 | +import org.springframework.data.jpa.domain.Specification; | ||
| 8 | +import org.springframework.data.jpa.repository.EntityGraph; | ||
| 5 | import org.springframework.data.jpa.repository.Query; | 9 | import org.springframework.data.jpa.repository.Query; |
| 6 | import org.springframework.stereotype.Repository; | 10 | import org.springframework.stereotype.Repository; |
| 7 | 11 | ||
| @@ -11,10 +15,19 @@ import com.bsth.vehicle.directive.entity.Directive60; | @@ -11,10 +15,19 @@ import com.bsth.vehicle.directive.entity.Directive60; | ||
| 11 | @Repository | 15 | @Repository |
| 12 | public interface Directive60Repository extends BaseRepository<Directive60, Integer>{ | 16 | public interface Directive60Repository extends BaseRepository<Directive60, Integer>{ |
| 13 | 17 | ||
| 14 | - | ||
| 15 | - @Query("select d from Directive60 d where d.data.timestamp > ?1") | 18 | + @EntityGraph(value = "directive60_sch", type = EntityGraph.EntityGraphType.FETCH) |
| 19 | + @Query("select d from Directive60 d where d.timestamp > ?1") | ||
| 16 | public List<Directive60> findByGtTime(Long ts); | 20 | public List<Directive60> findByGtTime(Long ts); |
| 17 | 21 | ||
| 18 | @Query(value = "SELECT IFNULL(num,0) as maxId from (SELECT MAX(msg_id) as num FROM bsth_v_directive_60) d", nativeQuery = true) | 22 | @Query(value = "SELECT IFNULL(num,0) as maxId from (SELECT MAX(msg_id) as num FROM bsth_v_directive_60) d", nativeQuery = true) |
| 19 | Integer maxMsgId(); | 23 | Integer maxMsgId(); |
| 24 | + | ||
| 25 | + | ||
| 26 | + @EntityGraph(value = "directive60_sch", type = EntityGraph.EntityGraphType.FETCH) | ||
| 27 | + @Override | ||
| 28 | + Page<Directive60> findAll(Specification<Directive60> spec, Pageable pageable); | ||
| 29 | + | ||
| 30 | + @EntityGraph(value = "directive60_sch", type = EntityGraph.EntityGraphType.FETCH) | ||
| 31 | + @Override | ||
| 32 | + List<Directive60> findAll(Specification<Directive60> spec); | ||
| 20 | } | 33 | } |
src/main/java/com/bsth/vehicle/directive/service/DirectiveService.java
| @@ -76,5 +76,5 @@ public interface DirectiveService extends BaseService<Directive60, Integer>{ | @@ -76,5 +76,5 @@ public interface DirectiveService extends BaseService<Directive60, Integer>{ | ||
| 76 | 76 | ||
| 77 | Map<String, Object> reply80(int id, int reply); | 77 | Map<String, Object> reply80(int id, int reply); |
| 78 | 78 | ||
| 79 | - List<Object> findDirective(String nbbm, int dType, int page, int size); | 79 | + Map<String, Object> findDirective(String nbbm, int dType, int page, int size); |
| 80 | } | 80 | } |
src/main/java/com/bsth/vehicle/directive/service/DirectiveServiceImpl.java
| @@ -2,12 +2,12 @@ package com.bsth.vehicle.directive.service; | @@ -2,12 +2,12 @@ package com.bsth.vehicle.directive.service; | ||
| 2 | 2 | ||
| 3 | import java.text.SimpleDateFormat; | 3 | import java.text.SimpleDateFormat; |
| 4 | import java.util.Collections; | 4 | import java.util.Collections; |
| 5 | -import java.util.Comparator; | ||
| 6 | import java.util.Date; | 5 | import java.util.Date; |
| 7 | import java.util.HashMap; | 6 | import java.util.HashMap; |
| 8 | import java.util.List; | 7 | import java.util.List; |
| 9 | import java.util.Map; | 8 | import java.util.Map; |
| 10 | 9 | ||
| 10 | +import org.apache.commons.lang3.StringUtils; | ||
| 11 | import org.slf4j.Logger; | 11 | import org.slf4j.Logger; |
| 12 | import org.slf4j.LoggerFactory; | 12 | import org.slf4j.LoggerFactory; |
| 13 | import org.springframework.beans.factory.annotation.Autowired; | 13 | import org.springframework.beans.factory.annotation.Autowired; |
| @@ -23,6 +23,7 @@ import com.bsth.vehicle.common.CommonMapped; | @@ -23,6 +23,7 @@ import com.bsth.vehicle.common.CommonMapped; | ||
| 23 | import com.bsth.vehicle.directive.Consts; | 23 | import com.bsth.vehicle.directive.Consts; |
| 24 | import com.bsth.vehicle.directive.MsgIdGenerator; | 24 | import com.bsth.vehicle.directive.MsgIdGenerator; |
| 25 | import com.bsth.vehicle.directive.buffer.DirectiveBuffer; | 25 | import com.bsth.vehicle.directive.buffer.DirectiveBuffer; |
| 26 | +import com.bsth.vehicle.directive.entity.Directive; | ||
| 26 | import com.bsth.vehicle.directive.entity.Directive60; | 27 | import com.bsth.vehicle.directive.entity.Directive60; |
| 27 | import com.bsth.vehicle.directive.entity.Directive60.DirectiveData; | 28 | import com.bsth.vehicle.directive.entity.Directive60.DirectiveData; |
| 28 | import com.bsth.vehicle.directive.entity.DirectiveC0.DirectiveC0Data; | 29 | import com.bsth.vehicle.directive.entity.DirectiveC0.DirectiveC0Data; |
| @@ -40,136 +41,140 @@ import com.bsth.websocket.handler.RealControlSocketHandler; | @@ -40,136 +41,140 @@ import com.bsth.websocket.handler.RealControlSocketHandler; | ||
| 40 | import com.google.common.base.Splitter; | 41 | import com.google.common.base.Splitter; |
| 41 | 42 | ||
| 42 | @Service | 43 | @Service |
| 43 | -public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> implements DirectiveService{ | 44 | +public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> implements DirectiveService { |
| 44 | 45 | ||
| 45 | Logger logger = LoggerFactory.getLogger(this.getClass()); | 46 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 46 | - | 47 | + |
| 47 | @Autowired | 48 | @Autowired |
| 48 | Directive60Repository directiveRepository; | 49 | Directive60Repository directiveRepository; |
| 49 | - | 50 | + |
| 50 | @Autowired | 51 | @Autowired |
| 51 | GpsRealDataBuffer gpsRealDataBuffer; | 52 | GpsRealDataBuffer gpsRealDataBuffer; |
| 52 | - | 53 | + |
| 53 | @Autowired | 54 | @Autowired |
| 54 | LineChangeRepository lineChangeRepository; | 55 | LineChangeRepository lineChangeRepository; |
| 55 | - | 56 | + |
| 56 | @Autowired | 57 | @Autowired |
| 57 | RealControlSocketHandler socketHandler; | 58 | RealControlSocketHandler socketHandler; |
| 58 | - | 59 | + |
| 59 | @Autowired | 60 | @Autowired |
| 60 | Directive80Repository d80Repository; | 61 | Directive80Repository d80Repository; |
| 61 | - | ||
| 62 | - SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH点mm分"); | ||
| 63 | - | 62 | + |
| 63 | + SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH点mm分"), sdfHHmm2 = new SimpleDateFormat("HH:mm"); | ||
| 64 | + | ||
| 64 | static Long schDiff = 1000 * 60 * 60L; | 65 | static Long schDiff = 1000 * 60 * 60L; |
| 65 | - | ||
| 66 | - //城市代码 | 66 | + |
| 67 | + // 城市代码 | ||
| 67 | static final short cityCode = 22; | 68 | static final short cityCode = 22; |
| 68 | - | 69 | + |
| 69 | @Override | 70 | @Override |
| 70 | public int send60Phrase(String nbbm, String text) { | 71 | public int send60Phrase(String nbbm, String text) { |
| 71 | Directive60 directive = null; | 72 | Directive60 directive = null; |
| 72 | try { | 73 | try { |
| 73 | - directive = create60Data(nbbm, text, (short)0x00, null); | 74 | + directive = create60Data(nbbm, text, (short) 0x00, null); |
| 74 | } catch (Exception e) { | 75 | } catch (Exception e) { |
| 75 | logger.error("发送消息短语出现异常", e); | 76 | logger.error("发送消息短语出现异常", e); |
| 76 | return -1; | 77 | return -1; |
| 77 | } | 78 | } |
| 78 | - | ||
| 79 | - if(null == directive) | 79 | + |
| 80 | + if (null == directive) | ||
| 80 | return -1; | 81 | return -1; |
| 81 | - | ||
| 82 | - //发送指令 | 82 | + |
| 83 | + // 发送指令 | ||
| 83 | int code = HttpUtils.postJson(JSON.toJSONString(directive)); | 84 | int code = HttpUtils.postJson(JSON.toJSONString(directive)); |
| 84 | - | ||
| 85 | - if(code == 0){ | ||
| 86 | - //添加到缓存,等待入库 | ||
| 87 | - DirectiveBuffer.put(directive); | ||
| 88 | - }else{ | ||
| 89 | - logger.error("send60Phrase error, code: " + code); | 85 | + directive.setHttpCode(code); |
| 86 | + // 添加到缓存,等待入库 | ||
| 87 | + DirectiveBuffer.put(directive); | ||
| 88 | + | ||
| 89 | + if (code != 0) { | ||
| 90 | + directive.setErrorText("网关通讯失败, code: " + code); | ||
| 91 | + DirectiveBuffer.transientList.add(directive); | ||
| 90 | } | 92 | } |
| 91 | return code; | 93 | return code; |
| 92 | } | 94 | } |
| 93 | - | 95 | + |
| 94 | @Override | 96 | @Override |
| 95 | - public int send60Dispatch(ScheduleRealInfo sch, int finish) { | 97 | + public int send60Dispatch(ScheduleRealInfo sch, int finish) { |
| 96 | Directive60 directive = null; | 98 | Directive60 directive = null; |
| 97 | try { | 99 | try { |
| 98 | - //如果发车时间距当前时间较远,则不发送 | ||
| 99 | - if(Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff){ | 100 | + // 如果发车时间距当前时间较远,则不发送 |
| 101 | + if (Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff) { | ||
| 100 | return -2; | 102 | return -2; |
| 101 | } | 103 | } |
| 102 | - | ||
| 103 | - String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT())) | ||
| 104 | - + ",由" + sch.getQdzName() + "发往" + sch.getZdzName(); | ||
| 105 | - | ||
| 106 | - //目前使用短语协议下发调度指令 | ||
| 107 | - directive = create60Data(sch.getClZbh(), text, (short)0x00, sch); | 104 | + |
| 105 | + String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT())) + ",由" | ||
| 106 | + + sch.getQdzName() + "发往" + sch.getZdzName(); | ||
| 107 | + | ||
| 108 | + // 目前使用短语协议下发调度指令 | ||
| 109 | + directive = create60Data(sch.getClZbh(), text, (short) 0x00, sch); | ||
| 108 | } catch (Exception e) { | 110 | } catch (Exception e) { |
| 109 | logger.error("生成调度指令时出现异常", e); | 111 | logger.error("生成调度指令时出现异常", e); |
| 110 | return -1; | 112 | return -1; |
| 111 | } | 113 | } |
| 112 | - | ||
| 113 | - if(null == directive) | 114 | + |
| 115 | + if (null == directive) | ||
| 114 | return -1; | 116 | return -1; |
| 115 | - | ||
| 116 | - //发送指令 | 117 | + |
| 118 | + // 发送指令 | ||
| 117 | int code = HttpUtils.postJson(JSON.toJSONString(directive)); | 119 | int code = HttpUtils.postJson(JSON.toJSONString(directive)); |
| 118 | - | ||
| 119 | - if(code == 0){ | ||
| 120 | - sch.setDirectiveState(60); | ||
| 121 | - //添加到缓存,等待入库 | ||
| 122 | - directive.setDispatch(true); | ||
| 123 | - directive.setSch(sch); | ||
| 124 | - DirectiveBuffer.put(directive); | ||
| 125 | - //通知页面,消息已发出 | 120 | + |
| 121 | + sch.setDirectiveState(60); | ||
| 122 | + // 添加到缓存,等待入库 | ||
| 123 | + directive.setDispatch(true); | ||
| 124 | + directive.setSch(sch); | ||
| 125 | + directive.setHttpCode(code); | ||
| 126 | + DirectiveBuffer.put(directive); | ||
| 127 | + | ||
| 128 | + if (code == 0) { | ||
| 129 | + // 通知页面,消息已发出 | ||
| 126 | sendDirectiveToPage(sch); | 130 | sendDirectiveToPage(sch); |
| 127 | - }else{ | ||
| 128 | - logger.error("send60Phrase error, code: " + code); | 131 | + } else { |
| 132 | + directive.setErrorText("网关通讯失败, code: " + code); | ||
| 133 | + DirectiveBuffer.transientList.add(directive); | ||
| 129 | } | 134 | } |
| 130 | return code; | 135 | return code; |
| 131 | } | 136 | } |
| 132 | - | 137 | + |
| 133 | /** | 138 | /** |
| 134 | * | 139 | * |
| 135 | - * @Title: sendDirectiveState | ||
| 136 | - * @Description: TODO(向页面推送班次指令状态) | ||
| 137 | - * @throws | 140 | + * @Title: sendDirectiveState @Description: TODO(向页面推送班次指令状态) @throws |
| 138 | */ | 141 | */ |
| 139 | @Override | 142 | @Override |
| 140 | - public void sendDirectiveToPage(ScheduleRealInfo sch){ | 143 | + public void sendDirectiveToPage(ScheduleRealInfo sch) { |
| 141 | JSONObject json = new JSONObject(); | 144 | JSONObject json = new JSONObject(); |
| 142 | json.put("fn", "directive"); | 145 | json.put("fn", "directive"); |
| 143 | json.put("t", sch); | 146 | json.put("t", sch); |
| 144 | socketHandler.sendMessageToLine(Integer.parseInt(sch.getXlBm()), json.toJSONString()); | 147 | socketHandler.sendMessageToLine(Integer.parseInt(sch.getXlBm()), json.toJSONString()); |
| 145 | } | 148 | } |
| 146 | 149 | ||
| 147 | - | ||
| 148 | @Override | 150 | @Override |
| 149 | public int send60Dispatch(Long id) { | 151 | public int send60Dispatch(Long id) { |
| 150 | ScheduleRealInfo sch = ScheduleBuffer.findOne(id); | 152 | ScheduleRealInfo sch = ScheduleBuffer.findOne(id); |
| 151 | - //车辆已完成班次 | 153 | + // 车辆已完成班次 |
| 152 | int finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh()); | 154 | int finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh()); |
| 153 | return send60Dispatch(sch, finish); | 155 | return send60Dispatch(sch, finish); |
| 154 | } | 156 | } |
| 155 | - | 157 | + |
| 156 | @Override | 158 | @Override |
| 157 | public int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch) { | 159 | public int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch) { |
| 158 | - logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown ); | ||
| 159 | - | ||
| 160 | - Directive60 directive = createDirective60(nbbm, nbbm + "_" + upDown, (short) 0x03, upDown, state); | 160 | + logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); |
| 161 | + | ||
| 162 | + String text = "切换为 " + (upDown == 0 ? "上行" : "下行") + (state == 0 ? "营运" : "未营运"); | ||
| 163 | + Directive60 directive = createDirective60(nbbm, text, (short) 0x03, upDown, state); | ||
| 161 | 164 | ||
| 162 | - if(null == directive) | 165 | + if (null == directive) |
| 163 | return -1; | 166 | return -1; |
| 164 | - //发送指令 | 167 | + // 发送指令 |
| 165 | int code = HttpUtils.postJson(JSON.toJSONString(directive)); | 168 | int code = HttpUtils.postJson(JSON.toJSONString(directive)); |
| 166 | - if(code == 0){ | ||
| 167 | - //添加到缓存,等待入库 | ||
| 168 | - if(null != sch) | ||
| 169 | - directive.setSch(sch); | ||
| 170 | - DirectiveBuffer.put(directive); | ||
| 171 | - }else{ | ||
| 172 | - logger.error("send60Phrase error, code: " + code); | 169 | + // 添加到缓存,等待入库 |
| 170 | + directive.setHttpCode(code); | ||
| 171 | + if (null != sch) | ||
| 172 | + directive.setSch(sch); | ||
| 173 | + DirectiveBuffer.put(directive); | ||
| 174 | + | ||
| 175 | + if (code != 0) { | ||
| 176 | + directive.setErrorText("网关通讯失败, code: " + code); | ||
| 177 | + DirectiveBuffer.transientList.add(directive); | ||
| 173 | } | 178 | } |
| 174 | return code; | 179 | return code; |
| 175 | } | 180 | } |
| @@ -181,80 +186,80 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | @@ -181,80 +186,80 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | ||
| 181 | public int lineChange(String nbbm, Integer lineId) { | 186 | public int lineChange(String nbbm, Integer lineId) { |
| 182 | Long t = System.currentTimeMillis(); | 187 | Long t = System.currentTimeMillis(); |
| 183 | String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); | 188 | String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); |
| 184 | - | 189 | + |
| 185 | Directive64 change = new Directive64(); | 190 | Directive64 change = new Directive64(); |
| 186 | LineChangeData data = new LineChangeData(); | 191 | LineChangeData data = new LineChangeData(); |
| 187 | data.setCityCode(cityCode); | 192 | data.setCityCode(cityCode); |
| 188 | data.setDeviceId(deviceId); | 193 | data.setDeviceId(deviceId); |
| 189 | data.setLineId("00" + String.valueOf(lineId)); | 194 | data.setLineId("00" + String.valueOf(lineId)); |
| 190 | - | 195 | + |
| 191 | change.setDeviceId(deviceId); | 196 | change.setDeviceId(deviceId); |
| 192 | change.setOperCode((short) 0X64); | 197 | change.setOperCode((short) 0X64); |
| 193 | change.setTimestamp(t); | 198 | change.setTimestamp(t); |
| 194 | change.setData(data); | 199 | change.setData(data); |
| 195 | - | 200 | + |
| 196 | int code = HttpUtils.postJson(JSON.toJSONString(change)); | 201 | int code = HttpUtils.postJson(JSON.toJSONString(change)); |
| 197 | - if(code == 0){ | ||
| 198 | - //入库 | ||
| 199 | - lineChangeRepository.save(change); | ||
| 200 | - DirectiveBuffer.changeMap.put(deviceId + '_' + t , change); | ||
| 201 | - //通知设备刷新线路文件,忽略结果 | 202 | + // 入库 |
| 203 | + change.setHttpCode(code); | ||
| 204 | + DirectiveBuffer.changeMap.put(deviceId + '_' + t, change); | ||
| 205 | + | ||
| 206 | + // 通知设备刷新线路文件,忽略结果 | ||
| 207 | + if (code == 0) | ||
| 202 | HttpUtils.postJson(createDeviceRefreshData(deviceId, lineId)); | 208 | HttpUtils.postJson(createDeviceRefreshData(deviceId, lineId)); |
| 203 | - }else{ | ||
| 204 | - logger.error("send60Phrase error, code: " + code); | ||
| 205 | - } | 209 | + else |
| 210 | + change.setErrorText("网关通讯失败, code: " + code); | ||
| 211 | + | ||
| 212 | + lineChangeRepository.save(change); | ||
| 206 | return code; | 213 | return code; |
| 207 | } | 214 | } |
| 208 | - | ||
| 209 | - | ||
| 210 | - public Directive60 create60Data(String nbbm, String text, Short dispatchInstruct, ScheduleRealInfo sch){ | ||
| 211 | - | ||
| 212 | - /*//向测试设备发送 | ||
| 213 | - String deviceId = "ABCDFEGH"; | ||
| 214 | - Short company = 5;*/ | ||
| 215 | - | 215 | + |
| 216 | + public Directive60 create60Data(String nbbm, String text, Short dispatchInstruct, ScheduleRealInfo sch) { | ||
| 217 | + | ||
| 218 | + /* | ||
| 219 | + * //向测试设备发送 String deviceId = "ABCDFEGH"; Short company = 5; | ||
| 220 | + */ | ||
| 221 | + | ||
| 216 | String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); | 222 | String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); |
| 217 | - if(null == deviceId){ | 223 | + if (null == deviceId) { |
| 218 | logger.error("没有设备号对照的车辆:" + nbbm); | 224 | logger.error("没有设备号对照的车辆:" + nbbm); |
| 219 | return null; | 225 | return null; |
| 220 | } | 226 | } |
| 221 | - //上下行和营运状态 | 227 | + // 上下行和营运状态 |
| 222 | Integer upDown = null, state = null; | 228 | Integer upDown = null, state = null; |
| 223 | - if(null == sch){ | 229 | + if (null == sch) { |
| 224 | GpsRealData gpsData = gpsRealDataBuffer.findOneByDeviceId(deviceId); | 230 | GpsRealData gpsData = gpsRealDataBuffer.findOneByDeviceId(deviceId); |
| 225 | - if(null == gpsData){ | 231 | + if (null == gpsData) { |
| 226 | logger.error("没有找到gps对照,无法确认营运状态和上下行:" + nbbm); | 232 | logger.error("没有找到gps对照,无法确认营运状态和上下行:" + nbbm); |
| 227 | return null; | 233 | return null; |
| 228 | } | 234 | } |
| 229 | upDown = gpsData.getUpDown(); | 235 | upDown = gpsData.getUpDown(); |
| 230 | state = gpsData.getState(); | 236 | state = gpsData.getState(); |
| 231 | - } | ||
| 232 | - else{ | 237 | + } else { |
| 233 | upDown = Integer.parseInt(sch.getXlDir()); | 238 | upDown = Integer.parseInt(sch.getXlDir()); |
| 234 | state = 0; | 239 | state = 0; |
| 235 | } | 240 | } |
| 236 | - | 241 | + |
| 237 | return createDirective60(nbbm, text, dispatchInstruct, upDown, state); | 242 | return createDirective60(nbbm, text, dispatchInstruct, upDown, state); |
| 238 | } | 243 | } |
| 239 | - | ||
| 240 | - public Directive60 createDirective60(String nbbm, String text, Short dispatchInstruct,int upDown,int state){ | 244 | + |
| 245 | + public Directive60 createDirective60(String nbbm, String text, Short dispatchInstruct, int upDown, int state) { | ||
| 241 | Long timestamp = System.currentTimeMillis(); | 246 | Long timestamp = System.currentTimeMillis(); |
| 242 | - | 247 | + |
| 243 | Short company = Short.parseShort(CommonMapped.vehicCompanyMap.get(nbbm)); | 248 | Short company = Short.parseShort(CommonMapped.vehicCompanyMap.get(nbbm)); |
| 244 | String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); | 249 | String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); |
| 245 | - | 250 | + |
| 246 | int msgId = MsgIdGenerator.getMsgId(); | 251 | int msgId = MsgIdGenerator.getMsgId(); |
| 247 | - | 252 | + |
| 248 | Directive60 directive = new Directive60(); | 253 | Directive60 directive = new Directive60(); |
| 249 | DirectiveData data = new DirectiveData(); | 254 | DirectiveData data = new DirectiveData(); |
| 250 | - //一级协议 | 255 | + // 一级协议 |
| 251 | directive.setOperCode((short) 0x60); | 256 | directive.setOperCode((short) 0x60); |
| 252 | - //设备号 | 257 | + // 设备号 |
| 253 | directive.setDeviceId(deviceId); | 258 | directive.setDeviceId(deviceId); |
| 254 | - //时间戳 | 259 | + // 时间戳 |
| 255 | directive.setTimestamp(timestamp); | 260 | directive.setTimestamp(timestamp); |
| 256 | directive.setMsgId(msgId); | 261 | directive.setMsgId(msgId); |
| 257 | - //构造数据 | 262 | + // 构造数据 |
| 258 | data.setDeviceId(deviceId); | 263 | data.setDeviceId(deviceId); |
| 259 | data.setDispatchInstruct(dispatchInstruct); | 264 | data.setDispatchInstruct(dispatchInstruct); |
| 260 | data.setTimestamp(timestamp); | 265 | data.setTimestamp(timestamp); |
| @@ -262,50 +267,45 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | @@ -262,50 +267,45 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | ||
| 262 | data.setMsgId(msgId); | 267 | data.setMsgId(msgId); |
| 263 | directive.setData(data); | 268 | directive.setData(data); |
| 264 | long serviceState; | 269 | long serviceState; |
| 265 | - try{ | 270 | + try { |
| 266 | serviceState = Consts.SERVICE_STATE[upDown][state]; | 271 | serviceState = Consts.SERVICE_STATE[upDown][state]; |
| 267 | - }catch(IndexOutOfBoundsException e){ | ||
| 268 | - //未知营运状态的直接默认为上行非营运 | 272 | + } catch (IndexOutOfBoundsException e) { |
| 273 | + // 未知营运状态的直接默认为上行非营运 | ||
| 269 | serviceState = Consts.SERVICE_STATE[0][1]; | 274 | serviceState = Consts.SERVICE_STATE[0][1]; |
| 270 | } | 275 | } |
| 271 | data.setServiceState(serviceState); | 276 | data.setServiceState(serviceState); |
| 272 | data.setTxtContent(text); | 277 | data.setTxtContent(text); |
| 273 | - | 278 | + |
| 274 | return directive; | 279 | return directive; |
| 275 | } | 280 | } |
| 276 | - | 281 | + |
| 277 | @Override | 282 | @Override |
| 278 | public int upDownChange(String nbbm, Integer upDown) { | 283 | public int upDownChange(String nbbm, Integer upDown) { |
| 279 | - /*Directive60 directive = createDirective60(nbbm, nbbm + "_" + upDown, (short) 0x03, upDown, 0); | ||
| 280 | - | ||
| 281 | - if(null == directive) | ||
| 282 | - return -1; | ||
| 283 | - | ||
| 284 | - int code = HttpUtils.postJson(JSON.toJSONString(directive)); | ||
| 285 | - if(code == 0){ | ||
| 286 | - //添加到缓存,等待入库 | ||
| 287 | - DirectiveBuffer.put(directive); | ||
| 288 | - }else{ | ||
| 289 | - logger.error("send60 upDownChange error, code: " + code); | ||
| 290 | - }*/ | 284 | + /* |
| 285 | + * Directive60 directive = createDirective60(nbbm, nbbm + "_" + upDown, | ||
| 286 | + * (short) 0x03, upDown, 0); | ||
| 287 | + * | ||
| 288 | + * if(null == directive) return -1; | ||
| 289 | + * | ||
| 290 | + * int code = HttpUtils.postJson(JSON.toJSONString(directive)); if(code | ||
| 291 | + * == 0){ //添加到缓存,等待入库 DirectiveBuffer.put(directive); }else{ | ||
| 292 | + * logger.error("send60 upDownChange error, code: " + code); } | ||
| 293 | + */ | ||
| 291 | return send60Operation(nbbm, 0, upDown, null); | 294 | return send60Operation(nbbm, 0, upDown, null); |
| 292 | } | 295 | } |
| 293 | - | 296 | + |
| 294 | /** | 297 | /** |
| 295 | * | 298 | * |
| 296 | - * @Title: createDeviceRefreshData | ||
| 297 | - * @Description: TODO(生成设备线路刷新数据包) | ||
| 298 | - * @param @return 设定文件 | ||
| 299 | - * @return String 返回类型 | ||
| 300 | - * @throws | 299 | + * @Title: createDeviceRefreshData @Description: |
| 300 | + * TODO(生成设备线路刷新数据包) @param @return 设定文件 @return String 返回类型 @throws | ||
| 301 | */ | 301 | */ |
| 302 | - public String createDeviceRefreshData(String deviceId, Integer lineId){ | ||
| 303 | - Long t = System.currentTimeMillis(); | 302 | + public String createDeviceRefreshData(String deviceId, Integer lineId) { |
| 303 | + Long t = System.currentTimeMillis(); | ||
| 304 | Map<String, Object> param = new HashMap<String, Object>(); | 304 | Map<String, Object> param = new HashMap<String, Object>(); |
| 305 | param.put("deviceId", deviceId); | 305 | param.put("deviceId", deviceId); |
| 306 | param.put("timestamp", t); | 306 | param.put("timestamp", t); |
| 307 | param.put("operCode", 0Xc0); | 307 | param.put("operCode", 0Xc0); |
| 308 | - | 308 | + |
| 309 | Map<String, Object> data = new HashMap<String, Object>(); | 309 | Map<String, Object> data = new HashMap<String, Object>(); |
| 310 | data.put("operCode", 0xa1); | 310 | data.put("operCode", 0xa1); |
| 311 | data.put("cityCode", cityCode); | 311 | data.put("cityCode", cityCode); |
| @@ -316,39 +316,37 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | @@ -316,39 +316,37 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | ||
| 316 | data.put("lineVersion", 0); | 316 | data.put("lineVersion", 0); |
| 317 | data.put("carparkDataVersion", 0); | 317 | data.put("carparkDataVersion", 0); |
| 318 | param.put("data", data); | 318 | param.put("data", data); |
| 319 | - | 319 | + |
| 320 | return JSON.toJSONString(param); | 320 | return JSON.toJSONString(param); |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | @Override | 323 | @Override |
| 324 | public Map<String, List<Directive80>> findNoCofm80(String lineCodes) { | 324 | public Map<String, List<Directive80>> findNoCofm80(String lineCodes) { |
| 325 | List<String> lineList = Splitter.on(",").trimResults().splitToList(lineCodes); | 325 | List<String> lineList = Splitter.on(",").trimResults().splitToList(lineCodes); |
| 326 | - | 326 | + |
| 327 | Map<String, List<Directive80>> rs = new HashMap<>(); | 327 | Map<String, List<Directive80>> rs = new HashMap<>(); |
| 328 | - for(String code : lineList){ | 328 | + for (String code : lineList) { |
| 329 | rs.put(code, DirectiveBuffer.findNoCofm80(Integer.parseInt(code))); | 329 | rs.put(code, DirectiveBuffer.findNoCofm80(Integer.parseInt(code))); |
| 330 | } | 330 | } |
| 331 | - | 331 | + |
| 332 | return rs; | 332 | return rs; |
| 333 | } | 333 | } |
| 334 | 334 | ||
| 335 | @Override | 335 | @Override |
| 336 | public Map<String, Object> reply80(int id, int reply) { | 336 | public Map<String, Object> reply80(int id, int reply) { |
| 337 | Map<String, Object> rs = new HashMap<>(); | 337 | Map<String, Object> rs = new HashMap<>(); |
| 338 | - | 338 | + |
| 339 | Directive80 d80 = DirectiveBuffer.findById80(id); | 339 | Directive80 d80 = DirectiveBuffer.findById80(id); |
| 340 | - if(null == d80){ | 340 | + if (null == d80) { |
| 341 | rs.put("status", ResponseCode.ERROR); | 341 | rs.put("status", ResponseCode.ERROR); |
| 342 | rs.put("msg", "服务器没有找到对应数据!"); | 342 | rs.put("msg", "服务器没有找到对应数据!"); |
| 343 | - } | ||
| 344 | - else if(d80.isConfirm()){ | 343 | + } else if (d80.isConfirm()) { |
| 345 | rs.put("status", ResponseCode.ERROR); | 344 | rs.put("status", ResponseCode.ERROR); |
| 346 | rs.put("msg", "该数据已经被处理了!"); | 345 | rs.put("msg", "该数据已经被处理了!"); |
| 347 | - } | ||
| 348 | - else{ | 346 | + } else { |
| 349 | d80.setConfirm(true); | 347 | d80.setConfirm(true); |
| 350 | d80.setConfirmRs(reply); | 348 | d80.setConfirmRs(reply); |
| 351 | - //封装C0数据包并回复设备 | 349 | + // 封装C0数据包并回复设备 |
| 352 | DirectiveC0 c0 = new DirectiveC0(); | 350 | DirectiveC0 c0 = new DirectiveC0(); |
| 353 | c0.setDeviceId(d80.getDeviceId()); | 351 | c0.setDeviceId(d80.getDeviceId()); |
| 354 | c0.setTimestamp(d80.getTimestamp()); | 352 | c0.setTimestamp(d80.getTimestamp()); |
| @@ -356,48 +354,85 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | @@ -356,48 +354,85 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> | ||
| 356 | 354 | ||
| 357 | DirectiveC0Data data = new DirectiveC0Data(); | 355 | DirectiveC0Data data = new DirectiveC0Data(); |
| 358 | data.setOperCode2((short) 0x86); | 356 | data.setOperCode2((short) 0x86); |
| 359 | - data.setRequestAck((short)(reply==0?0x06:0x15)); | ||
| 360 | - | 357 | + data.setRequestAck((short) (reply == 0 ? 0x06 : 0x15)); |
| 358 | + | ||
| 361 | c0.setData(data); | 359 | c0.setData(data); |
| 362 | - | 360 | + |
| 363 | d80.setC0(c0); | 361 | d80.setC0(c0); |
| 364 | - //入库 | 362 | + // 入库 |
| 365 | d80Repository.save(d80); | 363 | d80Repository.save(d80); |
| 366 | - | 364 | + |
| 367 | int code = HttpUtils.postJson(JSON.toJSONString(c0)); | 365 | int code = HttpUtils.postJson(JSON.toJSONString(c0)); |
| 368 | - | 366 | + |
| 369 | rs.put("status", ResponseCode.SUCCESS); | 367 | rs.put("status", ResponseCode.SUCCESS); |
| 370 | - if(code != 0) | 368 | + if (code != 0) |
| 371 | rs.put("msg", "发送C0响应指令到车载设备失败,但该操作已经被系统记录!"); | 369 | rs.put("msg", "发送C0响应指令到车载设备失败,但该操作已经被系统记录!"); |
| 372 | - | ||
| 373 | - //通知页面 | 370 | + |
| 371 | + // 通知页面 | ||
| 374 | Map<String, Object> sockMap = new HashMap<>(); | 372 | Map<String, Object> sockMap = new HashMap<>(); |
| 375 | sockMap.put("fn", "d80Confirm"); | 373 | sockMap.put("fn", "d80Confirm"); |
| 376 | sockMap.put("id", d80.getId()); | 374 | sockMap.put("id", d80.getId()); |
| 377 | socketHandler.sendMessageToLine(d80.getData().getLineId(), JSON.toJSONString(sockMap)); | 375 | socketHandler.sendMessageToLine(d80.getData().getLineId(), JSON.toJSONString(sockMap)); |
| 378 | } | 376 | } |
| 379 | - | 377 | + |
| 380 | return rs; | 378 | return rs; |
| 381 | } | 379 | } |
| 382 | 380 | ||
| 383 | @Override | 381 | @Override |
| 384 | - public List<Object> findDirective(String nbbm, int dType, int page, int size) { | ||
| 385 | - List<Object> list = null; | ||
| 386 | - if(dType == -1){ | 382 | + public Map<String, Object> findDirective(String nbbm, int dType, int page, int size) { |
| 383 | + Map<String, Object> rsMap = new HashMap<>(); | ||
| 384 | + List<Directive> list = null; | ||
| 385 | + | ||
| 386 | + switch (dType) { | ||
| 387 | + case -1: | ||
| 388 | + //所有指令 | ||
| 387 | list = DirectiveBuffer.findAll(); | 389 | list = DirectiveBuffer.findAll(); |
| 388 | - //时间倒序 | ||
| 389 | - Collections.sort(list, new DirectiveBuffer.DComparator()); | ||
| 390 | - | ||
| 391 | - int count = list.size(); | ||
| 392 | - //分页 | ||
| 393 | - int s = page * size | ||
| 394 | - ,e = s + size; | ||
| 395 | - | ||
| 396 | - if(e > count) | ||
| 397 | - e = count; | 390 | + break; |
| 391 | + case 0: | ||
| 392 | + //调度指令 | ||
| 393 | + list = DirectiveBuffer.findDispatch(); | ||
| 394 | + break; | ||
| 395 | + case 1: | ||
| 396 | + //运营指令 | ||
| 397 | + list = DirectiveBuffer.findByDispatchInstruct((short)0x03); | ||
| 398 | + break; | ||
| 399 | + case 2: | ||
| 400 | + //线路切换指令 | ||
| 401 | + list = DirectiveBuffer.findLineChange(); | ||
| 402 | + break; | ||
| 403 | + case 3: | ||
| 404 | + //消息短语 | ||
| 405 | + list = DirectiveBuffer.findByDispatchInstruct((short)0x00); | ||
| 406 | + break; | ||
| 407 | + } | ||
| 408 | + | ||
| 409 | + // 时间倒序 | ||
| 410 | + Collections.sort(list, new DirectiveBuffer.DComparator()); | ||
| 411 | + if(StringUtils.isNotBlank(nbbm)){ | ||
| 412 | + //按车辆过滤 | ||
| 398 | 413 | ||
| 399 | - list.subList(s, e); | ||
| 400 | } | 414 | } |
| 401 | - return list; | 415 | + |
| 416 | + int count = list.size(); | ||
| 417 | + // 分页 | ||
| 418 | + int s = page * size, e = s + size; | ||
| 419 | + | ||
| 420 | + if (e > count) | ||
| 421 | + e = count; | ||
| 422 | + | ||
| 423 | + List<Directive> rs = list.subList(s, e); | ||
| 424 | + | ||
| 425 | + // 时间格式化,车辆自编号转换 | ||
| 426 | + for (Directive d : rs) { | ||
| 427 | + if (d.getTimeHHmm() == null) | ||
| 428 | + d.setTimeHHmm(sdfHHmm2.format(new Date(d.getTimestamp()))); | ||
| 429 | + if (d.getNbbm() == null) | ||
| 430 | + d.setNbbm(CommonMapped.vehicDeviceBiMap.get(d.getDeviceId())); | ||
| 431 | + } | ||
| 432 | + | ||
| 433 | + rsMap.put("list", rs); | ||
| 434 | + rsMap.put("totalPages", count % size == 0 ? count / size : count / size + 1); | ||
| 435 | + rsMap.put("page", page); | ||
| 436 | + return rsMap; | ||
| 402 | } | 437 | } |
| 403 | } | 438 | } |
src/main/java/com/bsth/vehicle/directive/thread/FirstScheduleIssuedThread.java
| @@ -57,9 +57,9 @@ public class FirstScheduleIssuedThread extends Thread{ | @@ -57,9 +57,9 @@ public class FirstScheduleIssuedThread extends Thread{ | ||
| 57 | 57 | ||
| 58 | sch = list.get(0); | 58 | sch = list.get(0); |
| 59 | 59 | ||
| 60 | - if(sch.getOpDirectiveState()!= 100 | 60 | + if(sch.getOpDirectiveState() < 100 |
| 61 | && sch.getStatus() == 0 | 61 | && sch.getStatus() == 0 |
| 62 | - && Math.abs(sch.getFcsjT() - t) < space){ | 62 | + && Math.abs(sch.getDfsjT() - t) < space){ |
| 63 | 63 | ||
| 64 | /*if(sch.getDirectiveState() == -1){ | 64 | /*if(sch.getDirectiveState() == -1){ |
| 65 | //发送调度指令 | 65 | //发送调度指令 |
src/main/java/com/bsth/vehicle/gpsdata/GpsOfflineMonitorThread.java
| @@ -30,7 +30,7 @@ public class GpsOfflineMonitorThread extends Thread{ | @@ -30,7 +30,7 @@ public class GpsOfflineMonitorThread extends Thread{ | ||
| 30 | 30 | ||
| 31 | for(GpsRealData gps : allGps){ | 31 | for(GpsRealData gps : allGps){ |
| 32 | if(t - gps.getTimestamp() | 32 | if(t - gps.getTimestamp() |
| 33 | - > GpsRealDataBuffer.OFFLINE_TIME){ | 33 | + > GpsRealDataBuffer.OFFLINE_TIME && gps.isOnline()){ |
| 34 | gps.setOnline(false); | 34 | gps.setOnline(false); |
| 35 | logger.info("设备:" + gps.getDeviceId() + " 掉线"); | 35 | logger.info("设备:" + gps.getDeviceId() + " 掉线"); |
| 36 | } | 36 | } |
src/main/java/com/bsth/vehicle/gpsdata/buffer/GpsRealDataBuffer.java
| @@ -103,7 +103,8 @@ public class GpsRealDataBuffer { | @@ -103,7 +103,8 @@ public class GpsRealDataBuffer { | ||
| 103 | 103 | ||
| 104 | //更新GPS点 | 104 | //更新GPS点 |
| 105 | for(GpsRealData newGps : upGpsList){ | 105 | for(GpsRealData newGps : upGpsList){ |
| 106 | - if(t - newGps.getTimestamp() < OFFLINE_TIME){ | 106 | + if(t - newGps.getTimestamp() < OFFLINE_TIME |
| 107 | + && !newGps.isOnline()){ | ||
| 107 | logger.info("设备:" + newGps.getDeviceId() + " 上线"); | 108 | logger.info("设备:" + newGps.getDeviceId() + " 上线"); |
| 108 | newGps.setOnline(true); | 109 | newGps.setOnline(true); |
| 109 | } | 110 | } |
src/main/resources/static/pages/base/stationroute/addstationstemplate.html
| @@ -33,6 +33,26 @@ | @@ -33,6 +33,26 @@ | ||
| 33 | </div> | 33 | </div> |
| 34 | 34 | ||
| 35 | <div class="form-group"> | 35 | <div class="form-group"> |
| 36 | + <label class="col-md-3 control-label">坐标系类型:</label> | ||
| 37 | + <div class="col-md-9"> | ||
| 38 | + <div class="icheck-list"> | ||
| 39 | + <label> | ||
| 40 | + <input type="radio" class="icheck" name="baseRes" value='No'> 暂无坐标系 | ||
| 41 | + </label> | ||
| 42 | + <label> | ||
| 43 | + <input type="radio" class="icheck" name="baseRes" value='GCJ-02' > 火星坐标系 | ||
| 44 | + </label> | ||
| 45 | + <label > | ||
| 46 | + <input type="radio" class="icheck" name="baseRes" value='BD-09'> 百度坐标系 | ||
| 47 | + </label> | ||
| 48 | + <label > | ||
| 49 | + <input type="radio" class="icheck" name="baseRes" value='WGS84' checked> WGS84坐标系 | ||
| 50 | + </label> | ||
| 51 | + </div> | ||
| 52 | + </div> | ||
| 53 | + </div> | ||
| 54 | + | ||
| 55 | + <div class="form-group"> | ||
| 36 | <div class="alert alert-info font-blue-chambray" style="background-color: #2C3E50"> | 56 | <div class="alert alert-info font-blue-chambray" style="background-color: #2C3E50"> |
| 37 | <h5 class="block"><span class="help-block" style="color:#1bbc9b;"> * 手动添加站点规划说明: </span></h5> | 57 | <h5 class="block"><span class="help-block" style="color:#1bbc9b;"> * 手动添加站点规划说明: </span></h5> |
| 38 | <p> | 58 | <p> |
| @@ -146,21 +166,135 @@ $('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,a | @@ -146,21 +166,135 @@ $('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,a | ||
| 146 | // 弹出正在加载层 | 166 | // 弹出正在加载层 |
| 147 | var i = layer.load(0,{offset:['200px', '280px']}); | 167 | var i = layer.load(0,{offset:['200px', '280px']}); |
| 148 | 168 | ||
| 149 | - // 表单序列画 | 169 | + // 表单序列化 |
| 150 | var params = form.serializeJSON(); | 170 | var params = form.serializeJSON(); |
| 151 | 171 | ||
| 172 | + var baseResValue = params.baseRes; | ||
| 173 | + | ||
| 152 | // 站点名称字符串切割 | 174 | // 站点名称字符串切割 |
| 153 | var paramsStationsArray = params.stations.split('\r\n'); | 175 | var paramsStationsArray = params.stations.split('\r\n'); |
| 154 | 176 | ||
| 155 | - var stationList = []; | ||
| 156 | - | ||
| 157 | var len = paramsStationsArray.length; | 177 | var len = paramsStationsArray.length; |
| 158 | 178 | ||
| 159 | - if(len>0) { | 179 | + if(baseResValue=='No'){ |
| 160 | 180 | ||
| 161 | - for(var k =0;k<len;k++) { | 181 | + debugger; |
| 182 | + | ||
| 183 | + var stationList = []; | ||
| 184 | + | ||
| 185 | + for(var k =0;k<len;k++) | ||
| 186 | + stationList.push({name:paramsStationsArray[k]+'公交车站'}); | ||
| 187 | + | ||
| 188 | + | ||
| 189 | + console.log(stationList); | ||
| 190 | + | ||
| 191 | + return; | ||
| 192 | + | ||
| 193 | + // 根据站点名称获取百度坐标 | ||
| 194 | + map.stationsNameToPoints(stationList,function(resultJson) { | ||
| 162 | 195 | ||
| 163 | - debugger; | 196 | + // 根据坐标点获取两点之间的时间与距离 |
| 197 | + map.getDistanceAndDuration(resultJson,function(stationdataList) { | ||
| 198 | + | ||
| 199 | + // 根据坐标点获取两点之间的折线路段 | ||
| 200 | + map.getSectionListPlonly(stationdataList,function(sectiondata) { | ||
| 201 | + | ||
| 202 | + var addLine = LineObj.getLineObj(); | ||
| 203 | + | ||
| 204 | + // 设置第一个站的距离 | ||
| 205 | + stationdataList[0].distance = ''; | ||
| 206 | + | ||
| 207 | + // 设置第一个站的时间 | ||
| 208 | + stationdataList[0].duration = ''; | ||
| 209 | + | ||
| 210 | + // 定义站点信息JSON字符串 | ||
| 211 | + var stationJSON = JSON.stringify(stationdataList); | ||
| 212 | + | ||
| 213 | + // 定义路段信息字符串 | ||
| 214 | + var sectionJSON = JSON.stringify(sectiondata); | ||
| 215 | + | ||
| 216 | + // 参数集合 | ||
| 217 | + var params = {}; | ||
| 218 | + | ||
| 219 | + // 站点信息JSON字符串 | ||
| 220 | + params.stationJSON = stationJSON; | ||
| 221 | + | ||
| 222 | + // 线路ID | ||
| 223 | + params.lineId = addLine.id; | ||
| 224 | + | ||
| 225 | + // 方向 | ||
| 226 | + params.directions = directionData; | ||
| 227 | + | ||
| 228 | + // 原始坐标类型 | ||
| 229 | + params.dbType = 'b'; | ||
| 230 | + | ||
| 231 | + // 圆形半径 | ||
| 232 | + params.radius = '100'; | ||
| 233 | + | ||
| 234 | + // 限速 | ||
| 235 | + params.speedLimit = '60'; | ||
| 236 | + | ||
| 237 | + // 图形类型(r:圆形;p:多边形) | ||
| 238 | + params.shapesType = 'r'; | ||
| 239 | + | ||
| 240 | + // destroy:是否撤销 | ||
| 241 | + params.destroy = '0'; | ||
| 242 | + | ||
| 243 | + // versions:版本号 | ||
| 244 | + params.versions = '1'; | ||
| 245 | + | ||
| 246 | + // 路段信息JSON字符串 | ||
| 247 | + params.sectionJSON = sectionJSON; | ||
| 248 | + | ||
| 249 | + // 保存 | ||
| 250 | + ajaxd.manualSave(params,function(rd) { | ||
| 251 | + | ||
| 252 | + if(rd.status='SUCCESS') { | ||
| 253 | + | ||
| 254 | + layer.msg('保存成功!'); | ||
| 255 | + | ||
| 256 | + }else { | ||
| 257 | + | ||
| 258 | + layer.msg('保存失败!'); | ||
| 259 | + | ||
| 260 | + } | ||
| 261 | + | ||
| 262 | + // 关闭弹出层 | ||
| 263 | + layer.closeAll(); | ||
| 264 | + | ||
| 265 | + // 清除地图覆盖物 | ||
| 266 | + map.clearMarkAndOverlays(); | ||
| 267 | + | ||
| 268 | + // 刷新树 | ||
| 269 | + fun.resjtreeDate(addLine.id,directionData); | ||
| 270 | + | ||
| 271 | + // 查询上行路段信息 | ||
| 272 | + ajaxd.getSectionRouteInfo(addLine.id,directionData,function(data) { | ||
| 273 | + | ||
| 274 | + // 在地图上画出线路走向 | ||
| 275 | + fun.linePanlThree(data,directionData); | ||
| 276 | + | ||
| 277 | + }); | ||
| 278 | + | ||
| 279 | + }); | ||
| 280 | + | ||
| 281 | + }); | ||
| 282 | + | ||
| 283 | + }); | ||
| 284 | + | ||
| 285 | + }); | ||
| 286 | + | ||
| 287 | + }else { | ||
| 288 | + | ||
| 289 | + | ||
| 290 | + | ||
| 291 | + | ||
| 292 | + } | ||
| 293 | + | ||
| 294 | + | ||
| 295 | + /* if(len>0) { | ||
| 296 | + | ||
| 297 | + for(var k =0;k<len;k++) { | ||
| 164 | 298 | ||
| 165 | if(paramsStationsArray[k]=="") | 299 | if(paramsStationsArray[k]=="") |
| 166 | continue; | 300 | continue; |
| @@ -185,102 +319,7 @@ $('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,a | @@ -185,102 +319,7 @@ $('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,a | ||
| 185 | 319 | ||
| 186 | return; | 320 | return; |
| 187 | 321 | ||
| 188 | - } | ||
| 189 | - console.log(stationList); | ||
| 190 | - // 根据站点名称获取百度坐标 | ||
| 191 | - map.stationsNameToPoints(stationList,function(resultJson) { | ||
| 192 | - console.log(resultJson); | ||
| 193 | - debugger; | ||
| 194 | - // 根据坐标点获取两点之间的时间与距离 | ||
| 195 | - map.getDistanceAndDuration(resultJson,function(stationdataList) { | ||
| 196 | - | ||
| 197 | - // 根据坐标点获取两点之间的折线路段 | ||
| 198 | - map.getSectionListPlonly(stationdataList,function(sectiondata) { | ||
| 199 | - | ||
| 200 | - var addLine = LineObj.getLineObj(); | ||
| 201 | - | ||
| 202 | - // 设置第一个站的距离 | ||
| 203 | - stationdataList[0].distance = ''; | ||
| 204 | - | ||
| 205 | - // 设置第一个站的时间 | ||
| 206 | - stationdataList[0].duration = ''; | ||
| 207 | - | ||
| 208 | - // 定义站点信息JSON字符串 | ||
| 209 | - var stationJSON = JSON.stringify(stationdataList); | ||
| 210 | - | ||
| 211 | - // 定义路段信息字符串 | ||
| 212 | - var sectionJSON = JSON.stringify(sectiondata); | ||
| 213 | - | ||
| 214 | - // 参数集合 | ||
| 215 | - var params = {}; | ||
| 216 | - | ||
| 217 | - // 站点信息JSON字符串 | ||
| 218 | - params.stationJSON = stationJSON; | ||
| 219 | - | ||
| 220 | - // 线路ID | ||
| 221 | - params.lineId = addLine.id; | ||
| 222 | - | ||
| 223 | - // 方向 | ||
| 224 | - params.directions = directionData; | ||
| 225 | - | ||
| 226 | - // 原始坐标类型 | ||
| 227 | - params.dbType = 'b'; | ||
| 228 | - | ||
| 229 | - // 圆形半径 | ||
| 230 | - params.radius = '100'; | ||
| 231 | - | ||
| 232 | - // 限速 | ||
| 233 | - params.speedLimit = '60'; | ||
| 234 | - | ||
| 235 | - // 图形类型(r:圆形;p:多边形) | ||
| 236 | - params.shapesType = 'r'; | ||
| 237 | - | ||
| 238 | - // destroy:是否撤销 | ||
| 239 | - params.destroy = '0'; | ||
| 240 | - | ||
| 241 | - // versions:版本号 | ||
| 242 | - params.versions = '1'; | ||
| 243 | - | ||
| 244 | - // 路段信息JSON字符串 | ||
| 245 | - params.sectionJSON = sectionJSON; | ||
| 246 | - | ||
| 247 | - // 保存 | ||
| 248 | - ajaxd.manualSave(params,function(rd) { | ||
| 249 | - | ||
| 250 | - if(rd.status='SUCCESS') { | ||
| 251 | - | ||
| 252 | - layer.msg('保存成功!'); | ||
| 253 | - | ||
| 254 | - }else { | ||
| 255 | - | ||
| 256 | - layer.msg('保存失败!'); | ||
| 257 | - | ||
| 258 | - } | ||
| 259 | - | ||
| 260 | - // 关闭弹出层 | ||
| 261 | - layer.closeAll(); | ||
| 262 | - | ||
| 263 | - // 清除地图覆盖物 | ||
| 264 | - map.clearMarkAndOverlays(); | ||
| 265 | - | ||
| 266 | - // 刷新树 | ||
| 267 | - fun.resjtreeDate(addLine.id,directionData); | ||
| 268 | - | ||
| 269 | - // 查询上行路段信息 | ||
| 270 | - ajaxd.getSectionRouteInfo(addLine.id,directionData,function(data) { | ||
| 271 | - | ||
| 272 | - // 在地图上画出线路走向 | ||
| 273 | - fun.linePanlThree(data,directionData); | ||
| 274 | - | ||
| 275 | - }); | ||
| 276 | - | ||
| 277 | - }); | ||
| 278 | - | ||
| 279 | - }); | ||
| 280 | - | ||
| 281 | - }); | ||
| 282 | - | ||
| 283 | - }); | 322 | + } */ |
| 284 | 323 | ||
| 285 | } | 324 | } |
| 286 | 325 |
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
| @@ -301,11 +301,14 @@ var PublicFunctions = function () { | @@ -301,11 +301,14 @@ var PublicFunctions = function () { | ||
| 301 | // 添加站点坐标 | 301 | // 添加站点坐标 |
| 302 | tempM.potion = BusLine.getBusStation(k).position; | 302 | tempM.potion = BusLine.getBusStation(k).position; |
| 303 | 303 | ||
| 304 | + tempM.wgs = {x:'',y:''}; | ||
| 305 | + | ||
| 304 | // 添加 | 306 | // 添加 |
| 305 | stationInfo.push(tempM); | 307 | stationInfo.push(tempM); |
| 306 | 308 | ||
| 307 | } | 309 | } |
| 308 | - | 310 | + console.log(stationInfo); |
| 311 | + debugger; | ||
| 309 | // 获取站点之间的距离与时间 | 312 | // 获取站点之间的距离与时间 |
| 310 | WorldsBMap.getDistanceAndDuration(stationInfo,function(json) { | 313 | WorldsBMap.getDistanceAndDuration(stationInfo,function(json) { |
| 311 | 314 |
src/main/resources/static/pages/control/line/child_pages/historyDirective.html
0 → 100644
| 1 | +<div id="historyMessagePanel" style="margin: 17px 0 0 0;"> | ||
| 2 | + | ||
| 3 | + <form class="form-inline" > | ||
| 4 | + <div class="form-group" style="margin: 18px;"> | ||
| 5 | + <label class="" for="directiveSelect">指令类型:</label> | ||
| 6 | + <select class="form-control" id="directiveSelect" name="dType"> | ||
| 7 | + <option value="-1">全部</option> | ||
| 8 | + <option value="0">调度指令</option> | ||
| 9 | + <option value="1">运营指令</option> | ||
| 10 | + <option value="2">线路切换指令</option> | ||
| 11 | + <option value="3">消息短语</option> | ||
| 12 | + </select> | ||
| 13 | + </div> | ||
| 14 | + | ||
| 15 | + <div class="form-group" > | ||
| 16 | + <label class="" for="carSelect">车辆:</label> | ||
| 17 | + <select class="form-control" name="nbbm" id="carSelect" style="width: 170px;"></select> | ||
| 18 | + </div> | ||
| 19 | + </form> | ||
| 20 | + | ||
| 21 | + <div class="table-scrollable" style="min-height: 468px;"> | ||
| 22 | + <table class="table table-hover" style="table-layout: fixed;"> | ||
| 23 | + <thead> | ||
| 24 | + <tr> | ||
| 25 | + <th width="9%">车辆</th> | ||
| 26 | + <th width="7%">时间</th> | ||
| 27 | + <th width="47%">内容</th> | ||
| 28 | + <th width="8%">发送人</th> | ||
| 29 | + <th width="17%">状态</th> | ||
| 30 | + </tr> | ||
| 31 | + </thead> | ||
| 32 | + <tbody> | ||
| 33 | + </tbody> | ||
| 34 | + </table> | ||
| 35 | + </div> | ||
| 36 | + <div style="text-align: right;margin: 15px 15px 5px;"> | ||
| 37 | + <ul id="pagination" class="pagination"></ul> | ||
| 38 | + </div> | ||
| 39 | +</div> | ||
| 40 | +<script id="history_directive_list_temp" type="text/html"> | ||
| 41 | +{{each list as item i}} | ||
| 42 | +<tr> | ||
| 43 | + <td>{{item.nbbm}}</td> | ||
| 44 | + <td>{{item.timeHHmm}}</td> | ||
| 45 | + <td> | ||
| 46 | + <div class="text-furl"> | ||
| 47 | + {{item.data.txtContent}} | ||
| 48 | + </div> | ||
| 49 | + </td> | ||
| 50 | + <td>系统</td> | ||
| 51 | + <td> | ||
| 52 | + {{if item.errorText != null}} | ||
| 53 | + <span class="label label-sm label-danger">{{item.errorText}}</span> | ||
| 54 | + {{else}} | ||
| 55 | + {{if item.reply46 != 0}} | ||
| 56 | + <span class="label label-sm label-danger">设备无响应</span> | ||
| 57 | + {{/if}} | ||
| 58 | + {{if item.reply47 != 0}} | ||
| 59 | + <span class="label label-sm label-warning">驾驶员未确认</span> | ||
| 60 | + {{/if}} | ||
| 61 | + | ||
| 62 | + {{if item.reply46 == 0 && item.reply47 == 0}} | ||
| 63 | + <span class="label label-sm label-success"> 成功</span> | ||
| 64 | + {{/if}} | ||
| 65 | + {{/if}} | ||
| 66 | + </td> | ||
| 67 | +</tr> | ||
| 68 | +{{/each}} | ||
| 69 | +</script> | ||
| 70 | + | ||
| 71 | +<script> | ||
| 72 | +!function(){ | ||
| 73 | + var $car = $('#historyMessagePanel #carSelect') | ||
| 74 | + ,$dType = $('#historyMessagePanel #directiveSelect') | ||
| 75 | + ,$form = $('#historyMessagePanel form') | ||
| 76 | + ,$table = $('#historyMessagePanel table') | ||
| 77 | + ,$layer = $('#historyMessagePanel').parents('.layui-layer.layui-layer-page'); | ||
| 78 | + //车辆搜索框 | ||
| 79 | + createVehSearch($car).on('change', function(){ | ||
| 80 | + jsDoQuery(true); | ||
| 81 | + }); | ||
| 82 | + //分页参数 | ||
| 83 | + var page=0,pSize=12; | ||
| 84 | + //初始加载数据 | ||
| 85 | + jsDoQuery(true); | ||
| 86 | + | ||
| 87 | + //指令类型切换 | ||
| 88 | + $dType.on('change', function(){ | ||
| 89 | + jsDoQuery(true); | ||
| 90 | + }); | ||
| 91 | + | ||
| 92 | + function jsDoQuery(pagination){ | ||
| 93 | + var params = $form.serializeJSON(); | ||
| 94 | + params.page = page; | ||
| 95 | + params.size = pSize; | ||
| 96 | + | ||
| 97 | + console.log(params); | ||
| 98 | + $.get('/directive/list', params, function(rs){ | ||
| 99 | + console.log(rs); | ||
| 100 | + | ||
| 101 | + var htmlStr = template('history_directive_list_temp', rs); | ||
| 102 | + $table.find('tbody').html(htmlStr); | ||
| 103 | + | ||
| 104 | + if(pagination){ | ||
| 105 | + showPagination(rs, true); | ||
| 106 | + toCenter($layer); | ||
| 107 | + } | ||
| 108 | + }); | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + function showPagination(data, noQuery){ | ||
| 112 | + //分页 | ||
| 113 | + $('#pagination').jqPaginator({ | ||
| 114 | + totalPages: data.totalPages, | ||
| 115 | + visiblePages: 6, | ||
| 116 | + currentPage: page + 1, | ||
| 117 | + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>', | ||
| 118 | + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>', | ||
| 119 | + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>', | ||
| 120 | + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', | ||
| 121 | + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', | ||
| 122 | + onPageChange: function (num, type) { | ||
| 123 | + if(noQuery){ | ||
| 124 | + noQuery = false; | ||
| 125 | + return; | ||
| 126 | + } | ||
| 127 | + | ||
| 128 | + page = num - 1; | ||
| 129 | + jsDoQuery(); | ||
| 130 | + } | ||
| 131 | + }); | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + //将元素垂直居中,无视padding, margin等 | ||
| 135 | + function toCenter($e){ | ||
| 136 | + var h = $(document.body).height(); | ||
| 137 | + var eh = $e.height(); | ||
| 138 | + if(eh < h) | ||
| 139 | + $e.css('top', (h - eh) /2); | ||
| 140 | + } | ||
| 141 | +}(); | ||
| 142 | +</script> | ||
| 0 | \ No newline at end of file | 143 | \ No newline at end of file |
src/main/resources/static/pages/control/line/child_pages/historyMessage.html deleted
100644 → 0
| 1 | -<div id="historyMessagePanel" style="margin: 17px 5px 5px;"> | ||
| 2 | - | ||
| 3 | - <form class="form-inline" > | ||
| 4 | - <div class="form-group" style="margin: 18px;"> | ||
| 5 | - <label class="" for="directiveSelect">指令类型:</label> | ||
| 6 | - <select class="form-control" id="directiveSelect" name="dType"> | ||
| 7 | - <option value="-1">全部</option> | ||
| 8 | - <option value="0">调度指令</option> | ||
| 9 | - <option value="1">运营指令</option> | ||
| 10 | - <option value="2">线路切换指令</option> | ||
| 11 | - <option value="3">消息短语</option> | ||
| 12 | - </select> | ||
| 13 | - </div> | ||
| 14 | - | ||
| 15 | - <div class="form-group" > | ||
| 16 | - <label class="" for="carSelect">车辆:</label> | ||
| 17 | - <select class="form-control" name="nbbm" id="carSelect" style="width: 170px;"></select> | ||
| 18 | - </div> | ||
| 19 | - </form> | ||
| 20 | - | ||
| 21 | - <div class="table-scrollable"> | ||
| 22 | - <table class="table table-hover" style="table-layout: fixed;"> | ||
| 23 | - <thead> | ||
| 24 | - <tr> | ||
| 25 | - <th width="9%">车辆</th> | ||
| 26 | - <th width="9%">时间</th> | ||
| 27 | - <th width="45%">内容</th> | ||
| 28 | - <th width="8%">发送人</th> | ||
| 29 | - <th width="15%">状态</th> | ||
| 30 | - </tr> | ||
| 31 | - </thead> | ||
| 32 | - <tbody> | ||
| 33 | - <tr> | ||
| 34 | - <td>B-84256</td> | ||
| 35 | - <td>11:32</td> | ||
| 36 | - <td> | ||
| 37 | - <div class="text-furl">已完成6个班次,下一发车时间19点05分,由兰坪路浦江路发往江南旅游服务有限公司浦西停车保养场</div> | ||
| 38 | - </td> | ||
| 39 | - <td>系统</td> | ||
| 40 | - <td><span class="label label-sm label-success"> | ||
| 41 | - 设备收到,驾驶员确认 </span></td> | ||
| 42 | - </tr> | ||
| 43 | - <tr> | ||
| 44 | - <td>B-84256</td> | ||
| 45 | - <td>11:32</td> | ||
| 46 | - <td> | ||
| 47 | - <div class="text-furl">已完成6个班次,下一发车时间19点05分,由兰坪路浦江路发往江南旅游服务有限公司浦西停车保养场</div> | ||
| 48 | - </td> | ||
| 49 | - <td>系统</td> | ||
| 50 | - <td><span class="label label-sm label-success"> | ||
| 51 | - 设备收到,驾驶员确认 </span></td> | ||
| 52 | - </tr> | ||
| 53 | - <tr> | ||
| 54 | - <td>B-84256</td> | ||
| 55 | - <td>11:32</td> | ||
| 56 | - <td> | ||
| 57 | - <div class="text-furl">已完成6个班次,下一发车时间19点05分,由兰坪路浦江路发往江南旅游服务有限公司浦西停车保养场</div> | ||
| 58 | - </td> | ||
| 59 | - <td>系统</td> | ||
| 60 | - <td><span class="label label-sm label-warning"> | ||
| 61 | - 设备未响应 </span></td> | ||
| 62 | - </tr> | ||
| 63 | - <tr> | ||
| 64 | - <td>B-84256</td> | ||
| 65 | - <td>11:32</td> | ||
| 66 | - <td> | ||
| 67 | - <div class="text-furl">已完成6个班次,下一发车时间19点05分,由兰坪路浦江路发往江南旅游服务有限公司浦西停车保养场</div> | ||
| 68 | - </td> | ||
| 69 | - <td>系统</td> | ||
| 70 | - <td><span class="label label-sm label-danger"> | ||
| 71 | - 网关通讯失败 </span> <i class="fa fa-link"></i></td> | ||
| 72 | - </tr> | ||
| 73 | - <tr> | ||
| 74 | - <td>B-84256</td> | ||
| 75 | - <td>11:32</td> | ||
| 76 | - <td> | ||
| 77 | - <div class="text-furl">运营指令 - 上行营运</div> | ||
| 78 | - </td> | ||
| 79 | - <td>系统</td> | ||
| 80 | - <td><span class="label label-sm label-success"> | ||
| 81 | - 切换成功 </span></td> | ||
| 82 | - </tr> | ||
| 83 | - | ||
| 84 | - <tr> | ||
| 85 | - <td>B-84256</td> | ||
| 86 | - <td>11:32</td> | ||
| 87 | - <td> | ||
| 88 | - <div class="text-furl">线路切换 - 778 路</div> | ||
| 89 | - </td> | ||
| 90 | - <td>系统</td> | ||
| 91 | - <td><span class="label label-sm label-success"> | ||
| 92 | - 切换成功 </span></td> | ||
| 93 | - </tr> | ||
| 94 | - </tbody> | ||
| 95 | - </table> | ||
| 96 | - </div> | ||
| 97 | -</div> | ||
| 98 | - | ||
| 99 | -<script> | ||
| 100 | -!function(){ | ||
| 101 | - var $car = $('#historyMessagePanel #carSelect') | ||
| 102 | - ,$dType = $('#historyMessagePanel #directiveSelect'); | ||
| 103 | - createVehSearch($car); | ||
| 104 | -}(); | ||
| 105 | -</script> | ||
| 106 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/control/line/css/lineControl.css
| @@ -450,6 +450,10 @@ body{ | @@ -450,6 +450,10 @@ body{ | ||
| 450 | text-rendering: auto; | 450 | text-rendering: auto; |
| 451 | } | 451 | } |
| 452 | 452 | ||
| 453 | +.pagination .page.active a:before{ | ||
| 454 | + content: none; | ||
| 455 | +} | ||
| 456 | + | ||
| 453 | .text-load{ | 457 | .text-load{ |
| 454 | color:gray; | 458 | color:gray; |
| 455 | font-size: 12px; | 459 | font-size: 12px; |
src/main/resources/static/pages/control/line/js/toolbarEvent.js
| @@ -15,17 +15,17 @@ | @@ -15,17 +15,17 @@ | ||
| 15 | }); | 15 | }); |
| 16 | //调度指令 | 16 | //调度指令 |
| 17 | $('#msgAndDirect').on('click', function(){ | 17 | $('#msgAndDirect').on('click', function(){ |
| 18 | - layer.msg('功能测试中...稍后开放!'); | ||
| 19 | - /*$.get('/pages/control/line/child_pages/historyMessage.html', function(content){ | 18 | + $.get('/pages/control/line/child_pages/historyDirective.html', function(content){ |
| 20 | layer.open({ | 19 | layer.open({ |
| 21 | type: 1, | 20 | type: 1, |
| 22 | area: '930px', | 21 | area: '930px', |
| 23 | content: content, | 22 | content: content, |
| 24 | title : false, | 23 | title : false, |
| 24 | + shift: 5, | ||
| 25 | success: function(){ | 25 | success: function(){ |
| 26 | } | 26 | } |
| 27 | }); | 27 | }); |
| 28 | - });*/ | 28 | + }); |
| 29 | }); | 29 | }); |
| 30 | 30 | ||
| 31 | //设备上报 | 31 | //设备上报 |
src/main/resources/static/pages/control/lineallot/allot.html
| @@ -310,7 +310,6 @@ $(function(){ | @@ -310,7 +310,6 @@ $(function(){ | ||
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | layer.closeAll(); | 312 | layer.closeAll(); |
| 313 | - //跳转到线路调度 | ||
| 314 | loadPage('/pages/control/line/index.html'); | 313 | loadPage('/pages/control/line/index.html'); |
| 315 | }); | 314 | }); |
| 316 | //window.location.href = '/pages/control/line/index.html'; | 315 | //window.location.href = '/pages/control/line/index.html'; |