Commit 1895047f387432104c2366a90fbca61d5f948778

Authored by 王通
1 parent 1ef94bff

1.浦东公交提供经过闵行区的线路相关数据给闵行交通委

src/main/java/com/bsth/server_rs/base_info/car/buffer/CarBufferData.java
1   -package com.bsth.server_rs.base_info.car.buffer;
2   -
3   -import com.bsth.Application;
4   -import com.bsth.server_rs.base_info.car.Car;
5   -import com.bsth.server_rs.base_info.dto.BusCardDto;
6   -import com.google.common.collect.ArrayListMultimap;
7   -import org.springframework.beans.factory.annotation.Autowired;
8   -import org.springframework.boot.CommandLineRunner;
9   -import org.springframework.core.annotation.Order;
10   -import org.springframework.stereotype.Component;
11   -
12   -import java.util.*;
13   -import java.util.concurrent.TimeUnit;
14   -
15   -/**
16   - * 车辆数据缓存
17   - * Created by panzhao on 2017/3/30.
18   - */
19   -@Component
20   -@Order(6)
21   -public class CarBufferData implements CommandLineRunner {
22   -
23   - private static List<Car> data;
24   - private static Map<String, Car> idMap;
25   - private static ArrayListMultimap<String, Car> companyListMap;
26   -
27   - /**
28   - * 待入库的bus car
29   - */
30   - public static LinkedList<Car> pstList = new LinkedList<>();
31   -
32   - @Autowired
33   - CarRefreshThread carRefreshThread;
34   -
35   - public static List<Car> findAll(){
36   - return data;
37   - }
38   -
39   - public static Car findOne(String nbbm){
40   - return idMap.get(nbbm);
41   - }
42   -
43   - public static List<Car> findByCompany(String company){
44   - return companyListMap.get(company);
45   - }
46   -
47   - public static void replaceAll(List<Car> newData){
48   - data = newData;
49   - Map<String, Car> idMapCopy = new HashMap<>();
50   - ArrayListMultimap<String, Car> listMap = ArrayListMultimap.create();
51   -
52   - for(Car car : data){
53   - idMapCopy.put(car.getNbbm(), car);
54   - listMap.put(car.getCompanyCode(), car);
55   - }
56   - idMap = idMapCopy;
57   -
58   - companyListMap = listMap;
59   - }
60   -
61   - @Override
62   - public void run(String... strings) throws Exception {
63   - Application.mainServices.scheduleWithFixedDelay(carRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);
64   - }
65   -
66   - public static Map<String, Object> multiSaveCards(List<BusCardDto> list) {
67   - int success=0,error=0;
68   - //返回写入成功的卡数据
69   - List<BusCardDto> rsList = new ArrayList<>();
70   -
71   - Car c;
72   - for(BusCardDto bcd : list){
73   - c = idMap.get(bcd.getNbbm());
74   - if(c == null)
75   - error ++;
76   - else{
77   - c.setIdRfid(bcd.getIdCard());
78   - c.setTagRfid(bcd.getTagCard());
79   - c.setRemark(bcd.getRemark());
80   - success ++;
81   -
82   - pstList.add(c);
83   - rsList.add(bcd);
84   - }
85   - }
86   -
87   - Map<String, Object> rs = new HashMap<>();
88   - rs.put("success", success);
89   - rs.put("successList", rsList);
90   - rs.put("error", error);
91   - return rs;
92   - }
93   -}
  1 +package com.bsth.server_rs.base_info.car.buffer;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.server_rs.base_info.car.Car;
  5 +import com.bsth.server_rs.base_info.dto.BusCardDto;
  6 +import com.google.common.collect.ArrayListMultimap;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.boot.CommandLineRunner;
  9 +import org.springframework.core.annotation.Order;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import java.util.*;
  13 +import java.util.concurrent.TimeUnit;
  14 +
  15 +/**
  16 + * 车辆数据缓存
  17 + * Created by panzhao on 2017/3/30.
  18 + */
  19 +@Component
  20 +@Order(6)
  21 +public class CarBufferData implements CommandLineRunner {
  22 +
  23 + private static List<Car> data;
  24 + private static Map<String, Car> idMap;
  25 + private static ArrayListMultimap<String, Car> companyListMap;
  26 + private static Map<String, Car> device2car = new HashMap<>();
  27 +
  28 + /**
  29 + * 待入库的bus car
  30 + */
  31 + public static LinkedList<Car> pstList = new LinkedList<>();
  32 +
  33 + @Autowired
  34 + CarRefreshThread carRefreshThread;
  35 +
  36 + public static List<Car> findAll(){
  37 + return data;
  38 + }
  39 +
  40 + public static Car findOne(String nbbm){
  41 + return idMap.get(nbbm);
  42 + }
  43 +
  44 + public static List<Car> findByCompany(String company){
  45 + return companyListMap.get(company);
  46 + }
  47 +
  48 + public static Car findByDevice(String device){
  49 + return device2car.get(device);
  50 + }
  51 +
  52 + public static void replaceAll(List<Car> newData){
  53 + data = newData;
  54 + Map<String, Car> idMapCopy = new HashMap<>();
  55 + ArrayListMultimap<String, Car> listMap = ArrayListMultimap.create();
  56 + Map<String, Car> device2carCopy = new HashMap<>();
  57 +
  58 + for(Car car : data){
  59 + idMapCopy.put(car.getNbbm(), car);
  60 + listMap.put(car.getCompanyCode(), car);
  61 + device2carCopy.put(car.getEquipmentCode(), car);
  62 + }
  63 + idMap = idMapCopy;
  64 +
  65 + companyListMap = listMap;
  66 + device2car = device2carCopy;
  67 + }
  68 +
  69 + @Override
  70 + public void run(String... strings) throws Exception {
  71 + Application.mainServices.scheduleWithFixedDelay(carRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);
  72 + }
  73 +
  74 + public static Map<String, Object> multiSaveCards(List<BusCardDto> list) {
  75 + int success=0,error=0;
  76 + //返回写入成功的卡数据
  77 + List<BusCardDto> rsList = new ArrayList<>();
  78 +
  79 + Car c;
  80 + for(BusCardDto bcd : list){
  81 + c = idMap.get(bcd.getNbbm());
  82 + if(c == null)
  83 + error ++;
  84 + else{
  85 + c.setIdRfid(bcd.getIdCard());
  86 + c.setTagRfid(bcd.getTagCard());
  87 + c.setRemark(bcd.getRemark());
  88 + success ++;
  89 +
  90 + pstList.add(c);
  91 + rsList.add(bcd);
  92 + }
  93 + }
  94 +
  95 + Map<String, Object> rs = new HashMap<>();
  96 + rs.put("success", success);
  97 + rs.put("successList", rsList);
  98 + rs.put("error", error);
  99 + return rs;
  100 + }
  101 +}
... ...
src/main/java/com/bsth/server_rs/dks/BxRestService.java
... ... @@ -213,7 +213,10 @@ public class BxRestService {
213 213 String lineCode = gps.getLineId(), deviceId = gps.getDeviceId();
214 214 if (limitLines.indexOf(String.format("%s,", lineCode)) > -1) {
215 215 Line line = LineBufferData.findOne(lineCode);
216   - Car car = CarBufferData.findOne(deviceId);
  216 + Car car = CarBufferData.findByDevice(deviceId);
  217 + if (car == null) {
  218 + continue;
  219 + }
217 220 Map<String, Object> gpsMap = new HashMap<>();
218 221 gpsMap.put("lineName", line.getName());
219 222 gpsMap.put("lineCode", line.getShanghaiLinecode());
... ...