Commit 5570148ad9c73241441d61aef00c19ce112fa86c

Authored by yiming
1 parent afdd1ef3

青浦客流

src/main/java/com/example/demo/SaticScheduleTask.java
1 1 package com.example.demo;
2 2  
3 3  
4   -import cn.hutool.core.io.FileUtil;
  4 +
5 5 import com.example.demo.model.Scheduling;
6   -import com.example.demo.model.TJRL;
7   -import com.example.demo.model.TJRLDB;
8   -import com.example.demo.service.Analysis;
9 6 import com.example.demo.service.Contrast;
10 7 import org.slf4j.Logger;
11 8 import org.slf4j.LoggerFactory;
12   -import org.springframework.beans.factory.InitializingBean;
13 9 import org.springframework.beans.factory.annotation.Autowired;
14   -import org.springframework.beans.factory.annotation.Value;
15 10 import org.springframework.context.annotation.Configuration;
16 11 import org.springframework.scheduling.annotation.EnableScheduling;
17   -import org.springframework.scheduling.annotation.Scheduled;
18 12 import org.springframework.stereotype.Component;
19   -
20 13 import javax.annotation.PostConstruct;
21   -import java.io.*;
22   -import java.nio.file.*;
23 14 import java.time.LocalDateTime;
24 15 import java.time.format.DateTimeFormatter;
25 16 import java.util.*;
... ... @@ -34,155 +25,26 @@ public class SaticScheduleTask {
34 25  
35 26 private final static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
36 27  
37   - @Value("${ftp.root}")
38   - private String rootPath;
39   -
40   - private WatchService watchService;
41 28  
42 29 @Autowired
43 30 private Contrast contrast;
44 31  
45   - @Autowired
46   - private Analysis analysis;
47   -
48   - private static DateTimeFormatter tdf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
49   -
50   -
51   -
52 32  
53   - @Scheduled(cron = "0 0/5 * * * ?")
  33 + //@Scheduled(cron = "0 0/5 * * * ?")
54 34 @PostConstruct
55 35 void getArrivalInfos(){
56 36 logger.info("票务数据缓存加载: " + LocalDateTime.now());
57 37 try {
58 38 LocalDateTime now=LocalDateTime.now();
59   - List<Map<String,List<Scheduling>>> result=contrast.getSchedulingS(now,1);
60   - contrast.getSchedulingS=result.get(0);
61   - contrast.getSchedulingSSell=result.get(1);
62   - logger.info("===============================数据存放结束,开始读取文件================================");
63   - DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyyMMdd");
64   - String date=now.format(dtf);
65   - System.out.println(rootPath+File.separator+date);
66   - List<File> files = FileUtil.loopFiles(Paths.get(rootPath+File.separator+date),1,new wdbFileFilter());
67   - System.out.println("文件数"+files.size());
68   - logger.info("===============================文件数"+files.size()+",读取文件结束================================");
69   - //先把处理上一次没匹配到的
70   - logger.info("===============================处理上次未匹配到的数据"+contrast.oldData.size()+"================================");
71   - if(!contrast.oldData.isEmpty()){
72   - contrast.filterCardList(contrast.oldData,true);
73   - }
74   - logger.info("===============================文件解析开始================================");
75   - List<TJRLDB> allFile = analysis.getAllFile(files);
76   - logger.info("===============================交易数"+allFile.size()+"文件解析结束================================");
77   - contrast.filterCardList(allFile,false);
78   - } catch (Exception e) {
79   - e.printStackTrace();
80   - }
81   - }
82   -
83   -
84   -
85   - void getArrivalInfos2(String date,String path) {
86   - LocalDateTime now=LocalDateTime.parse(date,tdf);
87   - logger.info("票务数据缓存加载: " + now);
88   - try {
89   - List<Map<String,List<Scheduling>>> result=contrast.getSchedulingS(now,1);
90   - contrast.getSchedulingS=result.get(0);
91   - contrast.getSchedulingSSell=result.get(1);
92   - List<File> fl= FileUtil.loopFiles(path);
93   - System.out.println(fl.size());
94   - List<List<File>> subList=getSubList(100,fl);
95   - if(!subList.isEmpty()){
96   - subList.forEach(fs->{
97   - if (!fs.isEmpty()) {
98   - System.out.println("文件数"+fs.size());
99   - try {
100   - List<TJRLDB> allFile = analysis.getAllFile(fs);
101   - System.out.println("交易数"+allFile.size());
102   - contrast.filterCardList(allFile,true);
103   - } catch (Exception e) {
104   - e.printStackTrace();
105   - }
106   - }
107   - });
108   - }
109   - logger.info("==============================="+now.minusDays(1)+"数据处理完成================================");
  39 + DateTimeFormatter tdf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
  40 + now=LocalDateTime.parse("2024-08-26 00:00",tdf);
  41 + List<Scheduling> result=contrast.getSchedulingS(now,1);
  42 + contrast.getStationRoutes();
  43 + System.out.println(result.size());
110 44 } catch (Exception e) {
111 45 e.printStackTrace();
112 46 }
113 47 }
114 48  
115   - //@PostConstruct
116   - void processingHistory(){
117   - getArrivalInfos2("2022-11-22 00:00","/home/oldFile/20221121");
118   - //getArrivalInfos2("2022-11-23 00:00","/home/oldFile/20221122");
119   - }
120   -
121   - /**
122   - * @Description: 用来计算数据库中的乘车记录
123   - * @Param:
124   - * @return:
125   - * @Author: YM
126   - * @Date: 2021/10/13
127   - */
128   - //@PostConstruct
129   - private void filterCardListByDB() throws Exception {
130   - DateTimeFormatter tdf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
131   - LocalDateTime now=LocalDateTime.parse("2021-08-07 00:00",tdf);
132   -
133   - int day=1;
134   - List<Map<String,List<Scheduling>>> result=contrast.getSchedulingS(now,day);
135   - contrast.getSchedulingS=result.get(0);
136   - contrast.getSchedulingSSell=result.get(1);
137   - Map<String,Object> map=new HashMap<>();
138   - map.put("table","pd_control."+"fhtxnjrltb_jtb_copy1");
139   - LocalDateTime startDate=now.minusDays(day);
140   - String start=startDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
141   - String end=now.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
142   - map.put("start",start);
143   - map.put("end",end);
144   - contrast.filterCardListByDB(map);
145   - }
146   -
147   -
148   -
149   -
150   - public List<List<File>> getSubList(int length, List<File> list){
151   - int size = list.size();
152   - int temp = size / length + 1;
153   - boolean result = size % length == 0;
154   - List<List<File>> subList = new ArrayList<>();
155   - for (int i = 0; i < temp; i++) {
156   - if (i == temp - 1) {
157   - if (result) {
158   - break;
159   - }
160   - subList.add(list.subList(length * i, size)) ;
161   - } else {
162   - subList.add(list.subList(length * i, length * (i + 1))) ;
163   - }
164   - }
165   - return subList;
166   - }
167   -
168   -
169   - public static class wdbFileFilter implements FileFilter {
170   - @Override
171   - public boolean accept(File file) {
172   - if(file.isDirectory())
173   - return false;
174   - String name = file.getName();
175   - if(name.endsWith(".wdb")) //mp3则返回true
176   - return true;
177   - return false;
178   - }
179   - }
180   -
181   - public static void main(String[] args) {
182   - List<File> files = FileUtil.loopFiles(Paths.get("E:\\sftp\\home\\sftp\\20220725"),1,new wdbFileFilter());
183   - files.forEach(file->{
184   - System.out.println(file.getName());
185   - });
186   - }
187 49  
188 50 }
189 51 \ No newline at end of file
... ...
src/main/java/com/example/demo/mapper/db1/SiteMapper1.java
... ... @@ -15,18 +15,13 @@ import java.util.Map;
15 15 public interface SiteMapper1 {
16 16  
17 17  
18   - @DS("db1")
19   - void insertResult(List<TJRLDB> list);
20 18  
21 19 @DS("db1")
22   - List<Scheduling> getScheduling(Map<String, Object> map);
23   -
24   - /* @DS("db2")
25   - List<ArrivalInfo> getArrivalInfo(Map<String, Object> map);*/
  20 + List<Scheduling> getScheduling(String date);
26 21  
27 22 @DS("db1")
28 23 List<StationRoute> getStationRoute();
29 24  
30 25 @DS("db1")
31   - List<TJRLDB> getRecords(Map<String, Object> map);
  26 + String getMaxTime(String date);
32 27 }
33 28 \ No newline at end of file
... ...
src/main/java/com/example/demo/model/InOutStation.java 0 → 100644
  1 +package com.example.demo.model;
  2 +
  3 +import java.time.LocalDateTime;
  4 +import java.time.ZoneOffset;
  5 +import java.time.format.DateTimeFormatter;
  6 +
  7 +public class InOutStation {
  8 + private String stop_no;
  9 + private String inTime;
  10 + private String outTime;
  11 + private String inTimeStr;
  12 + private String outTimeStr;
  13 + private String stationRouteCode;
  14 + private String stationName;
  15 +
  16 +
  17 + public String getStop_no() {
  18 + return stop_no;
  19 + }
  20 +
  21 + public void setStop_no(String stop_no) {
  22 + this.stop_no = stop_no;
  23 + }
  24 +
  25 + public String getInTime() {
  26 + return inTime;
  27 + }
  28 +
  29 + public void setInTime(String inTime) {
  30 + this.inTime = inTime;
  31 + LocalDateTime localDateTime=LocalDateTime.ofEpochSecond(Long.parseLong(inTime)/1000,0, ZoneOffset.of("+8"));
  32 + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HHmmss");
  33 + this.inTimeStr = localDateTime.format(dtf);
  34 + }
  35 +
  36 + public String getOutTime() {
  37 + return outTime;
  38 + }
  39 +
  40 + public void setOutTime(String outTime) {
  41 + this.outTime = outTime;
  42 + LocalDateTime localDateTime=LocalDateTime.ofEpochSecond(Long.parseLong(outTime)/1000,0, ZoneOffset.of("+8"));
  43 + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HHmmss");
  44 + this.outTimeStr = localDateTime.format(dtf);
  45 + }
  46 +
  47 + public String getStationRouteCode() {
  48 + return stationRouteCode;
  49 + }
  50 +
  51 + public void setStationRouteCode(String stationRouteCode) {
  52 + this.stationRouteCode = stationRouteCode;
  53 + }
  54 +
  55 + public String getStationName() {
  56 + return stationName;
  57 + }
  58 +
  59 + public void setStationName(String stationName) {
  60 + this.stationName = stationName;
  61 + }
  62 +
  63 + public String getInTimeStr() {
  64 + return inTimeStr;
  65 + }
  66 +
  67 +
  68 +
  69 + public String getOutTimeStr() {
  70 + return outTimeStr;
  71 + }
  72 +
  73 +}
... ...
src/main/java/com/example/demo/model/Scheduling.java
1 1 package com.example.demo.model;
2 2  
3   -import java.util.ArrayList;
4   -import java.util.Collections;
5 3 import java.util.List;
6 4  
7 5 //bsth_c_s_sp_info_real和 bsth_c_cars
8 6 public class Scheduling implements Comparable<Scheduling> ,Cloneable{
9   - private String gs_name;
10   - private String xl_name;
11   - private String j_gh;//驾驶员工号
12   - private String j_name;//驾驶员名字
13 7 private String schedule_date_str;//日期
14   - private String xl_bm;
15   - private String xl_dir;
16   - private String bc_type;
  8 + private String equipment_code;//设备号
17 9 private String cl_zbh;//车辆编号
18   - private String lp_name;
  10 + private String gs_bm;//公司编码
  11 + private String j_gh;//驾驶员工号
  12 + private String xl_bm;//线路编码
  13 + private String car_plate;//车牌
  14 + private String xl_dir;//上下行
19 15 private String qdz_name;
20 16 private String qdz_code;
21   - private String fcsj_actual;//实际发车时间
22 17 private String zdz_name;
23 18 private String zdz_code;
  19 + private String xl_name;
  20 + private String fcsj_actual;//实际发车时间
24 21 private String zdsj_actual;//实际到达时间
25   - private String equipment_code;
26   - private String car_plate;
27   - private String stop_no;
28   - private String up_down;
29   - private String line_id;
30   - private String real_exec_date;
31   - private String ts;
32   - private String ts_out;
33   - private String station_route_code;
34   - private String station_name;
35   - private String station_code;
36   - private String s_gh;//售票员员工号
37   - private String s_name;//售票员名字
  22 + private String shanghai_linecode;
38 23  
39   - public String getS_gh() {
40   - return s_gh;
41   - }
  24 + private List<InOutStation> inOutStations;
42 25  
43   - public void setS_gh(String s_gh) {
44   - this.s_gh = s_gh;
45   - }
46 26  
47   - public String getS_name() {
48   - return s_name;
49   - }
50 27  
51   - public void setS_name(String s_name) {
52   - this.s_name = s_name;
  28 + public String getGs_bm() {
  29 + return gs_bm;
53 30 }
54 31  
55   - public String getGs_name() {
56   - return gs_name;
57   - }
58   -
59   - public void setGs_name(String gs_name) {
60   - this.gs_name = gs_name;
  32 + public void setGs_bm(String gs_bm) {
  33 + this.gs_bm = gs_bm;
61 34 }
62 35  
63 36 public String getXl_name() {
... ... @@ -76,8 +49,6 @@ public class Scheduling implements Comparable&lt;Scheduling&gt; ,Cloneable{
76 49 this.j_gh = j_gh;
77 50 }
78 51  
79   -
80   -
81 52 public String getXl_bm() {
82 53 return xl_bm;
83 54 }
... ... @@ -94,14 +65,6 @@ public class Scheduling implements Comparable&lt;Scheduling&gt; ,Cloneable{
94 65 this.xl_dir = xl_dir;
95 66 }
96 67  
97   - public String getBc_type() {
98   - return bc_type;
99   - }
100   -
101   - public void setBc_type(String bc_type) {
102   - this.bc_type = bc_type;
103   - }
104   -
105 68 public String getCl_zbh() {
106 69 return cl_zbh;
107 70 }
... ... @@ -110,14 +73,6 @@ public class Scheduling implements Comparable&lt;Scheduling&gt; ,Cloneable{
110 73 this.cl_zbh = cl_zbh;
111 74 }
112 75  
113   - public String getLp_name() {
114   - return lp_name;
115   - }
116   -
117   - public void setLp_name(String lp_name) {
118   - this.lp_name = lp_name;
119   - }
120   -
121 76 public String getQdz_name() {
122 77 return qdz_name;
123 78 }
... ... @@ -182,14 +137,6 @@ public class Scheduling implements Comparable&lt;Scheduling&gt; ,Cloneable{
182 137 this.car_plate = car_plate;
183 138 }
184 139  
185   - public String getJ_name() {
186   - return j_name;
187   - }
188   -
189   - public void setJ_name(String j_name) {
190   - this.j_name = j_name;
191   - }
192   -
193 140 public String getSchedule_date_str() {
194 141 return schedule_date_str;
195 142 }
... ... @@ -198,108 +145,41 @@ public class Scheduling implements Comparable&lt;Scheduling&gt; ,Cloneable{
198 145 this.schedule_date_str = schedule_date_str;
199 146 }
200 147  
201   - public String getStop_no() {
202   - return stop_no;
203   - }
204   -
205   - public void setStop_no(String stop_no) {
206   - this.stop_no = stop_no;
207   - }
208   -
209   - public String getUp_down() {
210   - return up_down;
211   - }
212   -
213   - public void setUp_down(String up_down) {
214   - this.up_down = up_down;
215   - }
216   -
217   - public String getLine_id() {
218   - return line_id;
  148 + public List<InOutStation> getInOutStations() {
  149 + return inOutStations;
219 150 }
220 151  
221   - public void setLine_id(String line_id) {
222   - this.line_id = line_id;
  152 + public void setInOutStations(List<InOutStation> inOutStations) {
  153 + this.inOutStations = inOutStations;
223 154 }
224 155  
225   - public String getReal_exec_date() {
226   - return real_exec_date;
  156 + public String getShanghai_linecode() {
  157 + return shanghai_linecode;
227 158 }
228 159  
229   - public void setReal_exec_date(String real_exec_date) {
230   - this.real_exec_date = real_exec_date;
231   - }
232   -
233   - public String getTs() {
234   - return ts;
235   - }
236   -
237   - public void setTs(String ts) {
238   - this.ts = ts;
239   - }
240   -
241   - public String getTs_out() {
242   - return ts_out;
243   - }
244   -
245   - public void setTs_out(String ts_out) {
246   - this.ts_out = ts_out;
247   - }
248   -
249   - public String getStation_route_code() {
250   - return station_route_code;
251   - }
252   -
253   - public void setStation_route_code(String station_route_code) {
254   - this.station_route_code = station_route_code;
255   - }
256   -
257   - public String getStation_name() {
258   - return station_name;
259   - }
260   -
261   - public void setStation_name(String station_name) {
262   - this.station_name = station_name;
263   - }
264   -
265   - public String getStation_code() {
266   - return station_code;
267   - }
268   -
269   - public void setStation_code(String station_code) {
270   - this.station_code = station_code;
  160 + public void setShanghai_linecode(String shanghai_linecode) {
  161 + this.shanghai_linecode = shanghai_linecode;
271 162 }
272 163  
273 164 @Override
274 165 public String toString() {
275 166 return "Scheduling{" +
276   - "gs_name='" + gs_name + '\'' +
277   - ", xl_name='" + xl_name + '\'' +
  167 + "schedule_date_str='" + schedule_date_str + '\'' +
  168 + ", equipment_code='" + equipment_code + '\'' +
  169 + ", cl_zbh='" + cl_zbh + '\'' +
  170 + ", gs_name='" + gs_bm + '\'' +
278 171 ", j_gh='" + j_gh + '\'' +
279   - ", j_name='" + j_name + '\'' +
280   - ", schedule_date_str='" + schedule_date_str + '\'' +
281 172 ", xl_bm='" + xl_bm + '\'' +
  173 + ", car_plate='" + car_plate + '\'' +
282 174 ", xl_dir='" + xl_dir + '\'' +
283   - ", bc_type='" + bc_type + '\'' +
284   - ", cl_zbh='" + cl_zbh + '\'' +
285   - ", lp_name='" + lp_name + '\'' +
286 175 ", qdz_name='" + qdz_name + '\'' +
287 176 ", qdz_code='" + qdz_code + '\'' +
288   - ", fcsj_actual='" + fcsj_actual + '\'' +
289 177 ", zdz_name='" + zdz_name + '\'' +
290 178 ", zdz_code='" + zdz_code + '\'' +
  179 + ", xl_name='" + xl_name + '\'' +
  180 + ", fcsj_actual='" + fcsj_actual + '\'' +
291 181 ", zdsj_actual='" + zdsj_actual + '\'' +
292   - ", equipment_code='" + equipment_code + '\'' +
293   - ", car_plate='" + car_plate + '\'' +
294   - ", stop_no='" + stop_no + '\'' +
295   - ", up_down='" + up_down + '\'' +
296   - ", line_id='" + line_id + '\'' +
297   - ", real_exec_date='" + real_exec_date + '\'' +
298   - ", ts='" + ts + '\'' +
299   - ", ts_out='" + ts_out + '\'' +
300   - ", station_route_code='" + station_route_code + '\'' +
301   - ", station_name='" + station_name + '\'' +
302   - ", station_code='" + station_code + '\'' +
  182 + ", inOutStations=" + inOutStations +
303 183 '}';
304 184 }
305 185  
... ... @@ -325,19 +205,4 @@ public class Scheduling implements Comparable&lt;Scheduling&gt; ,Cloneable{
325 205 return super.clone();
326 206 }
327 207  
328   - public static void main(String[] args) {
329   - Scheduling scheduling=new Scheduling();
330   - scheduling.setSchedule_date_str("2021-10-15");
331   - scheduling.setFcsj_actual("09:10");
332   - Scheduling scheduling2=new Scheduling();
333   - scheduling2.setSchedule_date_str("2021-10-14");
334   - scheduling2.setFcsj_actual("09:11");
335   - List<Scheduling> list=new ArrayList();
336   - list.add(scheduling);
337   - list.add(scheduling2);
338   - Collections.sort(list);
339   - System.out.println(list.get(0).getSchedule_date_str()+list.get(0).getFcsj_actual());
340   - System.out.println(list.get(1).getSchedule_date_str()+list.get(1).getFcsj_actual());
341   - }
342   -
343 208 }
... ...
src/main/java/com/example/demo/model/SchedulingKFK.java 0 → 100644
  1 +package com.example.demo.model;
  2 +
  3 +import java.util.List;
  4 +
  5 +public class SchedulingKFK{
  6 + private String date;//日期YYYYMMDD
  7 + private String nbbm;//车辆内部编码
  8 + private String deviceID;//车辆内部编码
  9 + private String company;//公司号
  10 + private String driver;//驾驶员工号
  11 + private String lineCode;//上海市线路编码
  12 + private String carPlate;//车牌 例如D12345不带中文
  13 + private String upDown;//上下行 0上行,1下行
  14 + private String qdzName;//起点站名称
  15 + private String qdzCode;//起点站编码
  16 + private String zdzName;//终点站名称
  17 + private String zdzCode;//终点站编码
  18 + private String fcsj;//实际发车时间hhmmss
  19 + private String zdsj;//实际到达时间hhmmss
  20 +
  21 + private List<InOutStation> inOutStations;//进出站信息
  22 +
  23 +
  24 + public static SchedulingKFK getInstance(Scheduling scheduling){
  25 + SchedulingKFK schedulingKFK=new SchedulingKFK();
  26 + schedulingKFK.setDate(scheduling.getSchedule_date_str()!=null?scheduling.getSchedule_date_str().replace("-",""):null);
  27 + schedulingKFK.setNbbm(scheduling.getCl_zbh());
  28 + schedulingKFK.setDeviceID(scheduling.getEquipment_code());
  29 + schedulingKFK.setCompany(scheduling.getGs_bm());
  30 + schedulingKFK.setDriver(scheduling.getJ_gh());
  31 + schedulingKFK.setLineCode(scheduling.getShanghai_linecode());
  32 + schedulingKFK.setCarPlate(scheduling.getCar_plate()!=null?scheduling.getCar_plate().replace("沪",""):null);
  33 + schedulingKFK.setUpDown(scheduling.getXl_dir());
  34 + schedulingKFK.setQdzName(scheduling.getQdz_name());
  35 + schedulingKFK.setQdzCode(scheduling.getQdz_code());
  36 + schedulingKFK.setZdzName(scheduling.getZdz_name());
  37 + schedulingKFK.setZdzCode(scheduling.getZdz_code());
  38 + schedulingKFK.setFcsj(scheduling.getFcsj_actual()!=null?scheduling.getFcsj_actual().replace(":","")+"00":null);
  39 + schedulingKFK.setZdsj(scheduling.getZdsj_actual()!=null?scheduling.getZdsj_actual().replace(":","")+"00":null);
  40 + schedulingKFK.setInOutStations(scheduling.getInOutStations());
  41 + return schedulingKFK;
  42 + }
  43 +
  44 + public String getDeviceID() {
  45 + return deviceID;
  46 + }
  47 +
  48 + public void setDeviceID(String deviceID) {
  49 + this.deviceID = deviceID;
  50 + }
  51 +
  52 + public String getDate() {
  53 + return date;
  54 + }
  55 +
  56 + public void setDate(String date) {
  57 + this.date = date;
  58 + }
  59 +
  60 + public String getNbbm() {
  61 + return nbbm;
  62 + }
  63 +
  64 + public void setNbbm(String nbbm) {
  65 + this.nbbm = nbbm;
  66 + }
  67 +
  68 + public String getCompany() {
  69 + return company;
  70 + }
  71 +
  72 + public void setCompany(String company) {
  73 + this.company = company;
  74 + }
  75 +
  76 + public String getDriver() {
  77 + return driver;
  78 + }
  79 +
  80 + public void setDriver(String driver) {
  81 + this.driver = driver;
  82 + }
  83 +
  84 + public String getLineCode() {
  85 + return lineCode;
  86 + }
  87 +
  88 + public void setLineCode(String lineCode) {
  89 + this.lineCode = lineCode;
  90 + }
  91 +
  92 + public String getCarPlate() {
  93 + return carPlate;
  94 + }
  95 +
  96 + public void setCarPlate(String carPlate) {
  97 + this.carPlate = carPlate;
  98 + }
  99 +
  100 + public String getUpDown() {
  101 + return upDown;
  102 + }
  103 +
  104 + public void setUpDown(String upDown) {
  105 + this.upDown = upDown;
  106 + }
  107 +
  108 + public String getQdzName() {
  109 + return qdzName;
  110 + }
  111 +
  112 + public void setQdzName(String qdzName) {
  113 + this.qdzName = qdzName;
  114 + }
  115 +
  116 + public String getQdzCode() {
  117 + return qdzCode;
  118 + }
  119 +
  120 + public void setQdzCode(String qdzCode) {
  121 + this.qdzCode = qdzCode;
  122 + }
  123 +
  124 + public String getZdzName() {
  125 + return zdzName;
  126 + }
  127 +
  128 + public void setZdzName(String zdzName) {
  129 + this.zdzName = zdzName;
  130 + }
  131 +
  132 + public String getZdzCode() {
  133 + return zdzCode;
  134 + }
  135 +
  136 + public void setZdzCode(String zdzCode) {
  137 + this.zdzCode = zdzCode;
  138 + }
  139 +
  140 + public String getFcsj() {
  141 + return fcsj;
  142 + }
  143 +
  144 + public void setFcsj(String fcsj) {
  145 + this.fcsj = fcsj;
  146 + }
  147 +
  148 + public String getZdsj() {
  149 + return zdsj;
  150 + }
  151 +
  152 + public void setZdsj(String zdsj) {
  153 + this.zdsj = zdsj;
  154 + }
  155 +
  156 + public List<InOutStation> getInOutStations() {
  157 + return inOutStations;
  158 + }
  159 +
  160 + public void setInOutStations(List<InOutStation> inOutStations) {
  161 + this.inOutStations = inOutStations;
  162 + }
  163 +
  164 +}
... ...
src/main/java/com/example/demo/model/TJRL.java deleted 100644 → 0
1   -package com.example.demo.model;
2   -
3   -import com.fasterxml.jackson.annotation.JsonProperty;
4   -
5   -import java.beans.PropertyDescriptor;
6   -import java.lang.reflect.Field;
7   -import java.lang.reflect.Method;
8   -
9   -public class TJRL implements Cloneable {
10   -
11   - private String TJRLCARDNO;// NUMBER Y 交通卡号
12   - private String TJRLINSID; // NUMBER Y 行业
13   - private String TJRLCDKIND;// NUMBER Y 卡类型
14   - private String TJRLPOSID;// NUMBER(10) POS机号
15   - private String TJRLRDATE;// CHAR(8) Y 交易日期
16   - private String TJRLRTIME;// CHAR(6) Y 交易时间
17   - private String TJRLCDBAL;// NUMBER(10) Y 交易前余额
18   - private String TJRLAMT;// NUMBER(10) Y 交易金额
19   - private String TJRLORGAMT;// NUMBER(10) Y 交易原始金额
20   - private String TJRLSTATID;// VARCHAR2(100) Y 公交线路
21   - private String TJRLUNITID;// VARCHAR2(100) Y 运营单位
22   - private String TJRLTXFG;// NUMBER Y 交易类型
23   - private String STATION_FLAG;// VARCHAR2(100) Y 匹配上电子路单:1;匹配不上:0
24   - private String ROAD_FORM_TYPE;// VARCHAR2(100) Y 路单类型
25   - private String UPDOWN;// VARCHAR2(100) Y 上下行:0上1下
26   - private String BUS_CODE;// VARCHAR2(100) Y 车辆自编号
27   - private String BUS_PLATE;// VARCHAR2(100) Y 车牌号
28   - private String ROAD_CODE;// VARCHAR2(100) Y 路牌编号
29   - private String DEPART_NAME;// VARCHAR2(100) Y 发车站点名称
30   - private String DEPART_CODE;// VARCHAR2(100) Y 发车站点编码
31   - private String DEPART_ACTUAL_TIME;// VARCHAR2(100) Y 实际发车时间
32   - private String REACH_NAME;// VARCHAR2(100) Y 到达站点名称
33   - private String REACH_CODE;// VARCHAR2(100) Y 到达站点编码
34   - private String REACH_ACTUAL_TIME;// VARCHAR2(100) Y 实际到达时间
35   - private String LEVELS_FLAG;// VARCHAR2(100) Y 匹配上到离站:1;匹配不上:0
36   - private String LEVELS1;// VARCHAR2(100) Y 站序1
37   - private String LEVELS_NAME1;// VARCHAR2(100) Y 站序1名称
38   - private String LEVELS1_CODE;// VARCHAR2(100) Y 站序1编码
39   - private String LEVELS2;// VARCHAR2(100) Y 站序2
40   - private String LEVELS_NAME2;// VARCHAR2(100) Y 站序2名称
41   - private String LEVELS2_CODE;// VARCHAR2(100) Y 站序2编码
42   - private String GPS_DATE_TIME1;// VARCHAR2(100) Y 站序1到站时间
43   - private String GPS_DATE_TIME2;// VARCHAR2(100) Y 站序2到站时间
44   - private String B_STATION_ID;// VARCHAR2(100) Y 电子路单id
45   - private String PLAN_START_TIME;// VARCHAR2(100) Y 计划发车时间
46   - private String PLAN_ARRIVE_TIME;// VARCHAR2(100) Y 计划到达时间
47   - private String ACTUAL_START_TIME;// VARCHAR2(100) Y 实际发车时间
48   - private String ACTUAL_ARRIVE_TIME;// VARCHAR2(100) Y 实际到达时间实际到达时间
49   - private String TRAD_ID;
50   - private String COUNT;//计数器
51   - private String lineId;
52   - public TJRL(){
53   -
54   - }
55   - public TJRL(TJRLDB tjrldb) {
56   - try {
57   - Field[] fields=TJRL.class.getDeclaredFields();
58   - for(Field f : fields) {
59   - PropertyDescriptor pd = new PropertyDescriptor(f.getName(), TJRLDB.class);
60   - Method rM = pd.getReadMethod();//获得读方法
61   - String v = rM.invoke(tjrldb)==null?"":rM.invoke(tjrldb).toString();
62   - pd = new PropertyDescriptor(f.getName(), TJRL.class);
63   - Method wM = pd.getWriteMethod();//获得写方法
64   - wM.invoke(this, v);
65   - }
66   - } catch (Exception e) {
67   - e.printStackTrace();
68   - }
69   - }
70   -
71   - public String getTJRLCARDNO() {
72   - return TJRLCARDNO;
73   - }
74   -
75   - public void setTJRLCARDNO(String TJRLCARDNO) {
76   - this.TJRLCARDNO = TJRLCARDNO;
77   - }
78   -
79   - public String getTJRLINSID() {
80   - return TJRLINSID;
81   - }
82   -
83   - public void setTJRLINSID(String TJRLINSID) {
84   - this.TJRLINSID = TJRLINSID;
85   - }
86   -
87   - public String getTJRLCDKIND() {
88   - return TJRLCDKIND;
89   - }
90   -
91   - public void setTJRLCDKIND(String TJRLCDKIND) {
92   - this.TJRLCDKIND = TJRLCDKIND;
93   - }
94   -
95   - public String getTJRLPOSID() {
96   - return TJRLPOSID;
97   - }
98   -
99   - public void setTJRLPOSID(String TJRLPOSID) {
100   - this.TJRLPOSID = TJRLPOSID;
101   - }
102   -
103   - public String getTJRLRDATE() {
104   - return TJRLRDATE;
105   - }
106   -
107   - public void setTJRLRDATE(String TJRLRDATE) {
108   - this.TJRLRDATE = TJRLRDATE;
109   - }
110   -
111   - public String getTJRLRTIME() {
112   - return TJRLRTIME;
113   - }
114   -
115   - public void setTJRLRTIME(String TJRLRTIME) {
116   - this.TJRLRTIME = TJRLRTIME;
117   - }
118   -
119   - public String getTJRLCDBAL() {
120   - return TJRLCDBAL;
121   - }
122   -
123   - public void setTJRLCDBAL(String TJRLCDBAL) {
124   - this.TJRLCDBAL = TJRLCDBAL;
125   - }
126   -
127   - public String getTJRLAMT() {
128   - return TJRLAMT;
129   - }
130   -
131   - public void setTJRLAMT(String TJRLAMT) {
132   - this.TJRLAMT = TJRLAMT;
133   - }
134   -
135   - public String getTJRLORGAMT() {
136   - return TJRLORGAMT;
137   - }
138   -
139   - public void setTJRLORGAMT(String TJRLORGAMT) {
140   - this.TJRLORGAMT = TJRLORGAMT;
141   - }
142   -
143   - public String getTJRLSTATID() {
144   - return TJRLSTATID;
145   - }
146   -
147   - public void setTJRLSTATID(String TJRLSTATID) {
148   - this.TJRLSTATID = TJRLSTATID;
149   - }
150   -
151   - public String getTJRLUNITID() {
152   - return TJRLUNITID;
153   - }
154   -
155   - public void setTJRLUNITID(String TJRLUNITID) {
156   - this.TJRLUNITID = TJRLUNITID;
157   - }
158   -
159   - public String getTJRLTXFG() {
160   - return TJRLTXFG;
161   - }
162   -
163   - public void setTJRLTXFG(String TJRLTXFG) {
164   - this.TJRLTXFG = TJRLTXFG;
165   - }
166   -
167   - public String getSTATION_FLAG() {
168   - return STATION_FLAG;
169   - }
170   -
171   - public void setSTATION_FLAG(String STATION_FLAG) {
172   - this.STATION_FLAG = STATION_FLAG;
173   - }
174   -
175   - public String getROAD_FORM_TYPE() {
176   - return ROAD_FORM_TYPE;
177   - }
178   -
179   - public void setROAD_FORM_TYPE(String ROAD_FORM_TYPE) {
180   - this.ROAD_FORM_TYPE = ROAD_FORM_TYPE;
181   - }
182   -
183   - public String getUPDOWN() {
184   - return UPDOWN;
185   - }
186   -
187   - public void setUPDOWN(String UPDOWN) {
188   - this.UPDOWN = UPDOWN;
189   - }
190   -
191   - public String getBUS_CODE() {
192   - return BUS_CODE;
193   - }
194   -
195   - public void setBUS_CODE(String BUS_CODE) {
196   - this.BUS_CODE = BUS_CODE;
197   - }
198   -
199   - public String getBUS_PLATE() {
200   - return BUS_PLATE;
201   - }
202   -
203   - public void setBUS_PLATE(String BUS_PLATE) {
204   - this.BUS_PLATE = BUS_PLATE;
205   - }
206   -
207   - public String getROAD_CODE() {
208   - return ROAD_CODE;
209   - }
210   -
211   - public void setROAD_CODE(String ROAD_CODE) {
212   - this.ROAD_CODE = ROAD_CODE;
213   - }
214   -
215   - public String getDEPART_NAME() {
216   - return DEPART_NAME;
217   - }
218   -
219   - public void setDEPART_NAME(String DEPART_NAME) {
220   - this.DEPART_NAME = DEPART_NAME;
221   - }
222   -
223   - public String getDEPART_CODE() {
224   - return DEPART_CODE;
225   - }
226   -
227   - public void setDEPART_CODE(String DEPART_CODE) {
228   - this.DEPART_CODE = DEPART_CODE;
229   - }
230   -
231   - public String getDEPART_ACTUAL_TIME() {
232   - return DEPART_ACTUAL_TIME;
233   - }
234   -
235   - public void setDEPART_ACTUAL_TIME(String DEPART_ACTUAL_TIME) {
236   - this.DEPART_ACTUAL_TIME = DEPART_ACTUAL_TIME;
237   - }
238   -
239   - public String getREACH_NAME() {
240   - return REACH_NAME;
241   - }
242   -
243   - public void setREACH_NAME(String REACH_NAME) {
244   - this.REACH_NAME = REACH_NAME;
245   - }
246   -
247   - public String getREACH_CODE() {
248   - return REACH_CODE;
249   - }
250   -
251   - public void setREACH_CODE(String REACH_CODE) {
252   - this.REACH_CODE = REACH_CODE;
253   - }
254   -
255   - public String getREACH_ACTUAL_TIME() {
256   - return REACH_ACTUAL_TIME;
257   - }
258   -
259   - public void setREACH_ACTUAL_TIME(String REACH_ACTUAL_TIME) {
260   - this.REACH_ACTUAL_TIME = REACH_ACTUAL_TIME;
261   - }
262   -
263   - public String getLEVELS_FLAG() {
264   - return LEVELS_FLAG;
265   - }
266   -
267   - public void setLEVELS_FLAG(String LEVELS_FLAG) {
268   - this.LEVELS_FLAG = LEVELS_FLAG;
269   - }
270   -
271   - public String getLEVELS1() {
272   - return LEVELS1;
273   - }
274   -
275   - public void setLEVELS1(String LEVELS1) {
276   - this.LEVELS1 = LEVELS1;
277   - }
278   -
279   - public String getLEVELS_NAME1() {
280   - return LEVELS_NAME1;
281   - }
282   -
283   - public void setLEVELS_NAME1(String LEVELS_NAME1) {
284   - this.LEVELS_NAME1 = LEVELS_NAME1;
285   - }
286   -
287   - public String getLEVELS1_CODE() {
288   - return LEVELS1_CODE;
289   - }
290   -
291   - public void setLEVELS1_CODE(String LEVELS1_CODE) {
292   - this.LEVELS1_CODE = LEVELS1_CODE;
293   - }
294   -
295   - public String getLEVELS2() {
296   - return LEVELS2;
297   - }
298   -
299   - public void setLEVELS2(String LEVELS2) {
300   - this.LEVELS2 = LEVELS2;
301   - }
302   -
303   - public String getLEVELS_NAME2() {
304   - return LEVELS_NAME2;
305   - }
306   -
307   - public void setLEVELS_NAME2(String LEVELS_NAME2) {
308   - this.LEVELS_NAME2 = LEVELS_NAME2;
309   - }
310   -
311   - public String getLEVELS2_CODE() {
312   - return LEVELS2_CODE;
313   - }
314   -
315   - public void setLEVELS2_CODE(String LEVELS2_CODE) {
316   - this.LEVELS2_CODE = LEVELS2_CODE;
317   - }
318   -
319   - public String getGPS_DATE_TIME1() {
320   - return GPS_DATE_TIME1;
321   - }
322   -
323   - public void setGPS_DATE_TIME1(String GPS_DATE_TIME1) {
324   - this.GPS_DATE_TIME1 = GPS_DATE_TIME1;
325   - }
326   -
327   - public String getGPS_DATE_TIME2() {
328   - return GPS_DATE_TIME2;
329   - }
330   -
331   - public void setGPS_DATE_TIME2(String GPS_DATE_TIME2) {
332   - this.GPS_DATE_TIME2 = GPS_DATE_TIME2;
333   - }
334   -
335   - public String getB_STATION_ID() {
336   - return B_STATION_ID;
337   - }
338   -
339   - public void setB_STATION_ID(String b_STATION_ID) {
340   - B_STATION_ID = b_STATION_ID;
341   - }
342   -
343   - public String getPLAN_START_TIME() {
344   - return PLAN_START_TIME;
345   - }
346   -
347   - public void setPLAN_START_TIME(String PLAN_START_TIME) {
348   - this.PLAN_START_TIME = PLAN_START_TIME;
349   - }
350   -
351   - public String getPLAN_ARRIVE_TIME() {
352   - return PLAN_ARRIVE_TIME;
353   - }
354   -
355   - public void setPLAN_ARRIVE_TIME(String PLAN_ARRIVE_TIME) {
356   - this.PLAN_ARRIVE_TIME = PLAN_ARRIVE_TIME;
357   - }
358   -
359   - public String getACTUAL_START_TIME() {
360   - return ACTUAL_START_TIME;
361   - }
362   -
363   - public void setACTUAL_START_TIME(String ACTUAL_START_TIME) {
364   - this.ACTUAL_START_TIME = ACTUAL_START_TIME;
365   - }
366   -
367   - public String getACTUAL_ARRIVE_TIME() {
368   - return ACTUAL_ARRIVE_TIME;
369   - }
370   -
371   - public void setACTUAL_ARRIVE_TIME(String ACTUAL_ARRIVE_TIME) {
372   - this.ACTUAL_ARRIVE_TIME = ACTUAL_ARRIVE_TIME;
373   - }
374   -
375   - public String getTRAD_ID() {
376   - return TRAD_ID;
377   - }
378   -
379   - public void setTRAD_ID(String TRAD_ID) {
380   - this.TRAD_ID = TRAD_ID;
381   - }
382   -
383   - public String getCOUNT() {
384   - return COUNT;
385   - }
386   -
387   - public void setCOUNT(String COUNT) {
388   - this.COUNT = COUNT;
389   - }
390   -
391   - @Override
392   - public Object clone() throws CloneNotSupportedException {
393   - return super.clone();
394   - }
395   -
396   - public String getLineId() {
397   - return lineId;
398   - }
399   -
400   - public void setLineId(String lineId) {
401   - this.lineId = lineId;
402   - }
403   -}
src/main/java/com/example/demo/model/TJRLDB.java deleted 100644 → 0
1   -package com.example.demo.model;
2   -
3   -public class TJRLDB extends TJRL{
4   - private String TJRLDRVCRDID;
5   - private String MARK;
6   -
7   - public TJRLDB(){
8   - super();
9   - }
10   - public TJRLDB(TJRLDB tjrldb) throws Exception {
11   - super(tjrldb);
12   - }
13   -
14   - public String getTJRLDRVCRDID() {
15   - return TJRLDRVCRDID;
16   - }
17   -
18   - public void setTJRLDRVCRDID(String TJRLDRVCRDID) {
19   - this.TJRLDRVCRDID = TJRLDRVCRDID;
20   - }
21   -
22   - public String getMARK() {
23   - return MARK;
24   - }
25   -
26   - public void setMARK(String MARK) {
27   - this.MARK = MARK;
28   - }
29   -}
src/main/java/com/example/demo/service/Analysis.java deleted 100644 → 0
1   -package com.example.demo.service;
2   -
3   -import com.example.demo.SaticScheduleTask;
4   -import com.example.demo.model.TJRL;
5   -import com.example.demo.model.TJRLDB;
6   -import org.slf4j.Logger;
7   -import org.slf4j.LoggerFactory;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.beans.factory.annotation.Value;
10   -import org.springframework.kafka.core.KafkaTemplate;
11   -import org.springframework.stereotype.Component;
12   -
13   -import java.io.BufferedReader;
14   -import java.io.File;
15   -import java.io.FileReader;
16   -import java.text.ParseException;
17   -import java.text.SimpleDateFormat;
18   -import java.util.*;
19   -
20   -@Component
21   -public class Analysis {
22   - protected final Logger logger = LoggerFactory.getLogger(this.getClass());
23   -
24   - private static Date startDate = subtractTime(new Date(), -300000);
25   -
26   -
27   - @Value("${ftp.oldFile}")
28   - private String oldFile;
29   -
30   -
31   - /**
32   - * 获取路径下的所有文件/文件夹 /读取文件 返回时间和carid
33   - *
34   - * @param files 需要遍历的文件夹路径
35   - * @return
36   - */
37   - public List<TJRLDB> getAllFile(List<File> files) throws Exception {
38   - List<TJRLDB> listMap = new ArrayList<>();
39   - List<String> list = new ArrayList<String>();
40   - for (File file : files) {
41   - if (!file.isDirectory()) {
42   - String name=file.getName().substring(2,10);
43   - String absolutePath = file.getAbsolutePath();
44   - String time = (absolutePath.substring(absolutePath.indexOf("GJ"), absolutePath.indexOf("GJ") + 16)).replace("GJ", "");
45   - Date nowTime = null;
46   - try {
47   - nowTime = new SimpleDateFormat("yyyyMMddHHmmss").parse(time);
48   - } catch (ParseException e) {
49   - e.printStackTrace();
50   - }
51   - //if (belongCalendar(nowTime)) { //判断是否在对应时间内
52   - list.add(file.getAbsolutePath());
53   - List<String> strings = txt2String(new File(file.getAbsolutePath()));//读取文件
54   - for (int i = 0; i < strings.size(); i++) {
55   - String text = strings.get(i);
56   - Map<String, Object> map = new HashMap<>();
57   - TJRLDB tjrl=new TJRLDB();
58   - String POSID=text.substring(0,8);
59   - tjrl.setTJRLPOSID(POSID);
60   - Long val = Long.parseLong(text.substring(30, 40));
61   - String cardId = Long.toHexString(val).toUpperCase();
62   - tjrl.setTJRLDRVCRDID(cardId);//司售卡号 DriverCardId签到卡片ID号,BCD编码,司售卡卡号
63   - //map.put("DriverCardType", text.substring(40, 42));//DriverCardType HEX格式,签到卡的卡型,BCD编码
64   - //map.put("CHECKINDATE", text.substring(42, 54));//签到时间YYYYMMDDhhmm,BCD编码
65   - //map.put("CHECKOUTCOUNT", text.substring(54, 60));//签到总次数,BCD编码
66   - tjrl.setTJRLTXFG(text.substring(60, 62));//交易类型 Txn Flag HEX格式,交易标志,其中88为正常交易,99为锁卡交易,BCD编码,定义见附录1交易类型对照表
67   - String POSSEQID=text.substring(62, 68);//HEX格式,消费交易流水号,BCD编码
68   - //map.put("CITYCODE", text.substring(68, 72)); //城市代码号,BCD编码
69   - tjrl.setTJRLCARDNO(text.substring(72, 82));//CARDID消费卡的ID号,BCD编码
70   - tjrl.setTJRLCDKIND(text.substring(82, 84));//Card Type HEX格式,消费卡卡型,BCD编码
71   - tjrl.setTJRLCDBAL(text.substring(84, 92));//交易前余额 BalBef消费卡交易前金额,BCD编码 BCD编码之前最高位1表示负数,0表示正数
72   - tjrl.setTJRLAMT(text.substring(92, 100));//交易金额 TxnAmount本次消费交易金额,BCD编码
73   - String TJRLRDATE=text.substring(100, 108);
74   - try {
75   - tjrl.setTJRLRDATE(new SimpleDateFormat("yyyy-MM-dd").
76   - format(new SimpleDateFormat("yyyyMMdd").parse(text.substring(100, 108))));
77   - //交易日期 本次消费交易日期,BCD编码YYYYMMDD
78   - } catch (ParseException e) {
79   - e.printStackTrace();
80   - }
81   - String TJRLRTIME=text.substring(108, 114);
82   - try {
83   - tjrl.setTJRLRTIME(new SimpleDateFormat("HH:mm:ss").
84   - format(new SimpleDateFormat("HHmmss").parse(text.substring(108, 114))));
85   - //交易时间 Txn Time本次消费交易时间,BCD编码hhmmss
86   - } catch (ParseException e) {
87   - e.printStackTrace();
88   - }
89   - tjrl.setCOUNT(text.substring(114, 120));//交易计数器,BCD编码
90   - tjrl.setTJRLORGAMT(text.substring(120, 124));//交易原始金额Orignal Txn Amount
91   - //map.put("CARDSPEC", text.substring(124, 126)); //卡规范,BCD编码 01—建设部卡 02—交通部卡 03-交通部二维码
92   - String TAC=text.substring(126, 134);//HEX格式,交易认证码,BCD编码
93   - String TRAD_ID=TAC+POSSEQID+TJRLRDATE+TJRLRTIME;
94   - tjrl.setTRAD_ID(TRAD_ID);////pos交易数据需要加上 trad_id 用tac+pos流水+交易日期+交易时间
95   -
96   - listMap.add(tjrl);
97   - }
98   - //}
99   - /* Analysis analysis=new Analysis();
100   - analysis.setOldFile(oldFile);*/
101   - File f2=new File(oldFile+File.separator+name);
102   - if(!f2.exists()&&!f2.isDirectory()){
103   - f2.mkdir();
104   - }
105   - File f=new File(oldFile+File.separator+name+File.separator+file.getName());
106   - file.renameTo(f);
107   - }
108   - }
109   - return listMap;
110   - }
111   -
112   -
113   - /**
114   - * 读取文件内容
115   - */
116   - public static List<String> txt2String(File file) {
117   - List<String> list = new ArrayList<>();
118   - StringBuilder result = new StringBuilder();
119   - try {
120   - BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
121   - String s = null;
122   - while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
123   - list.add(s);
124   - }
125   - br.close();
126   - } catch (Exception e) {
127   - e.printStackTrace();
128   - }
129   - return list;
130   - }
131   -
132   -
133   - /**
134   - * 加减对应时间后的日期
135   - *
136   - * @param date 需要加减时间的日期
137   - * @param amount 加减的时间(毫秒)
138   - * @return 加减对应时间后的日期
139   - */
140   -
141   - private static Date subtractTime(Date date, int amount) {
142   - try {
143   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
144   - String strTime = sdf.format(date.getTime() + amount);
145   - Date time = sdf.parse(strTime);
146   - return time;
147   - } catch (Exception e) {
148   - e.printStackTrace();
149   - }
150   - return null;
151   - }
152   -
153   - /**
154   - * 判断时间是否在时间段内
155   - *
156   - * @param nowTime
157   - * @return
158   - */
159   - public static boolean belongCalendar(Date nowTime) {
160   - Calendar date = Calendar.getInstance();
161   - date.setTime(nowTime);
162   -
163   - Calendar begin = Calendar.getInstance();
164   - begin.setTime(startDate);
165   -
166   - Calendar end = Calendar.getInstance();
167   - end.setTime(new Date());
168   -
169   - if (date.after(begin) && date.before(end)) {
170   - return true;
171   - } else {
172   - return false;
173   - }
174   - }
175   - /* @Value("${ftp.oldFile}")
176   - public void setOldFile(String oldFile) {
177   - Analysis.oldFile = oldFile;
178   - }*/
179   -
180   -
181   - public static boolean containsWords(String inputString, String[] items) {
182   - boolean found = false;
183   - for (String item : items) {
184   - if (inputString.contains(item)) {
185   - found = true;
186   - break;
187   - }
188   -
189   - }
190   - return found;
191   - }
192   -
193   - public static void main(String[] args) {
194   - String s="A123";
195   - String[] arr={"A","B","C","D","E","F"};
196   - if(containsWords(s,arr)){
197   - System.out.println(s);
198   - }
199   - }
200   -}
201   -
src/main/java/com/example/demo/service/Contrast.java
1 1 package com.example.demo.service;
2 2  
3 3 import cn.hutool.json.JSON;
4   -import com.alibaba.fastjson.JSONArray;
5   -import com.alibaba.fastjson.JSONObject;
6   -import com.bsth.util.HttpUtils;
7   -import com.example.demo.SaticScheduleTask;
  4 +import cn.hutool.json.JSONObject;
8 5 import com.example.demo.mapper.db1.SiteMapper1;
9 6 import com.example.demo.mapper.db2.SiteMapper2;
10 7 import com.example.demo.model.*;
... ... @@ -12,11 +9,7 @@ import org.slf4j.Logger;
12 9 import org.slf4j.LoggerFactory;
13 10 import org.springframework.beans.factory.annotation.Autowired;
14 11 import org.springframework.kafka.core.KafkaTemplate;
15   -import org.springframework.kafka.support.SendResult;
16 12 import org.springframework.stereotype.Service;
17   -import org.springframework.util.concurrent.ListenableFuture;
18   -import org.springframework.util.concurrent.ListenableFutureCallback;
19   -import java.text.ParseException;
20 13 import java.text.SimpleDateFormat;
21 14 import java.time.*;
22 15 import java.time.format.DateTimeFormatter;
... ... @@ -38,37 +31,6 @@ public class Contrast {
38 31 @Autowired
39 32 private KafkaTemplate kafkaTemplate;
40 33  
41   - @Autowired
42   - private SaticScheduleTask saticScheduleTask;
43   -
44   - public Map<String,List<Scheduling>> getSchedulingS;
45   - public Map<String,List<Scheduling>> getSchedulingSSell;
46   - public List<TJRLDB> oldData=new ArrayList<>();
47   -
48   - private final int TIME=5;
49   - private final int TIME2=0;//刷卡的时间和到站实际允许误差值
50   -
51   - public List<Map> getDriverCardList() throws Exception{
52   - List<Map> list = new ArrayList<>();
53   - String drivercard = HttpUtils.sendPost("http://112.64.187.3:1080/gjService/gjService/drivercard", null);
54   - JSONObject obj = JSONObject.parseObject(drivercard);
55   - String errorCode = obj.get("errorCode").toString();
56   - if (errorCode.equals("1")) {
57   - JSONArray dateBeans = obj.getJSONArray("dateBean");
58   - for (int i = 0; i < dateBeans.size(); i++) {
59   - Map dataList = new HashMap();
60   - JSONObject o = (JSONObject) dateBeans.get(i);
61   - dataList.put("outcardno", o.get("outcardno"));
62   - dataList.put("cardno", o.get("cardno"));
63   - dataList.put("jobCode", o.get("jobCode"));
64   - dataList.put("companyNo", o.get("companyNo"));
65   - dataList.put("brancheCompanyNo", o.get("brancheCompanyNo"));
66   - dataList.put("personalName", o.get("personalName"));
67   - list.add(dataList);
68   - }
69   - }
70   - return list;
71   - }
72 34  
73 35  
74 36 /**
... ... @@ -77,41 +39,42 @@ public class Contrast {
77 39 * @Author: YM
78 40 * @Date: 2021/10/12
79 41 */
80   - public List<Map<String,List<Scheduling>>> getSchedulingS(LocalDateTime now,int day) throws Exception{
  42 + public List<Scheduling> getSchedulingS(LocalDateTime now,int day) throws Exception{
81 43 List<Scheduling> schedulingS=new ArrayList<>();
82   - long start = System.currentTimeMillis();
83 44 Map map = new HashMap();
84   - //通过驾驶员信息和 刷卡时间 查询 排班表 和车辆表
  45 +
  46 + //计算开始结束时间
85 47 LocalDateTime localDateTimeStart=now.minusDays(day);
86   - LocalDateTime localDateTimeEnd=now.plusMinutes(60);
  48 + DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
  49 + DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
  50 + String dateTime = siteMapper1.getMaxTime(localDateTimeStart.format(df));
  51 + LocalDateTime localDateTimeEnd=LocalDateTime.parse(dateTime,dtf).plusMinutes(5);
87 52  
88   - DateTimeFormatter tdf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
89   - map.put("startTime",localDateTimeStart.format(tdf));
90   - map.put("endTime",localDateTimeEnd.format(tdf));
91   - List<Scheduling> schedulingList = siteMapper1.getScheduling(map);
  53 + //查询路单
  54 + map.put("date",localDateTimeStart.format(df));
  55 + List<Scheduling> schedulingList = siteMapper1.getScheduling(localDateTimeStart.format(df));
92 56  
93 57 //按车辆和方向分组
94 58 Map<String, List<Scheduling>> m = schedulingList.stream().collect(Collectors.groupingBy(s->s.getEquipment_code()+"_"+s.getXl_bm()+"_"+s.getXl_dir()));
95   - //站点路由
  59 +
  60 + //查询站点路由
96 61 List<StationRoute> StationRouteList=siteMapper1.getStationRoute();
97 62 Map<String, List<StationRoute>> m2 = StationRouteList.stream().collect(Collectors.groupingBy(s->s.getStation_code()+"_"+s.getDirections()+"_"+s.getLine_code()));
98 63  
99   - //合并进出表数据
  64 +
  65 + //查询进出站
100 66 map.clear();
101 67 map.put("timeStart",localDateTimeStart.toInstant(ZoneOffset.of("+8")).toEpochMilli());
102 68 map.put("timeEnd",localDateTimeEnd.toInstant(ZoneOffset.of("+8")).toEpochMilli());
103   -
104 69 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
105   - Date ds = sdf.parse(localDateTimeStart.format(tdf));
  70 + Date ds = sdf.parse(localDateTimeStart.format(df));
106 71 Calendar cs = Calendar.getInstance();
107 72 cs.setTime(ds);
108 73 int weekStr=cs.get(Calendar.WEEK_OF_YEAR);
109   -
110   - Date de = sdf.parse(localDateTimeEnd.format(tdf));
  74 + Date de = sdf.parse(localDateTimeEnd.format(df));
111 75 Calendar ce = Calendar.getInstance();
112 76 ce.setTime(de);
113 77 int weekEnd=ce.get(Calendar.WEEK_OF_YEAR);
114   -
115 78 String weeks="";
116 79 if(weekStr==weekEnd){
117 80 weeks="= "+weekStr;
... ... @@ -121,8 +84,8 @@ public class Contrast {
121 84 map.put("weeks",weeks);
122 85 map.put("year",localDateTimeStart.getYear());
123 86 List<ArrivalInfo> list= siteMapper2.getArrivalInfo(map);
124   - logger.info("====================map "+map.toString());
125   - logger.info("====================list "+list.size());
  87 +
  88 + //合并进出站数据
126 89 List<ArrivalInfo> arrivalInfoList=new ArrayList<>();
127 90 ArrivalInfo in=null;
128 91 for (ArrivalInfo arrivalInfo : list) {
... ... @@ -139,194 +102,81 @@ public class Contrast {
139 102 }
140 103 }
141 104  
142   -
143   -
144   - int b = 0;
145   - DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
146 105 for (ArrivalInfo arrivalInfo : arrivalInfoList) {//进出表
147 106 //进出站时间
148 107 LocalDateTime inTime=LocalDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(arrivalInfo.getTs())), ZoneOffset.of("+8"));
149   - LocalDateTime outTime=LocalDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(arrivalInfo.getTs_out())), ZoneOffset.of("+8"));
150   -
151 108  
152 109 String key=arrivalInfo.getDevice_id()+"_"+arrivalInfo.getLine_id()+"_"+arrivalInfo.getUp_down();
153 110 List<Scheduling> l=m.get(key);
  111 +
154 112 if(l!=null){
155 113 Collections.sort(l);
156 114 for (Scheduling scheduling : l) {
157 115 //实际发车到达时间
158 116 if(scheduling.getFcsj_actual()!=null){
159   - LocalDateTime fcsj_actual=LocalDateTime.parse(scheduling.getReal_exec_date()+" "+scheduling.getFcsj_actual(),dateTimeFormatter).minusMinutes(TIME);
160   - if(fcsj_actual.isBefore(inTime)){
161   - Scheduling scheduling1= null;
162   - try {
163   - scheduling1 = (Scheduling) scheduling.clone();
164   - } catch (CloneNotSupportedException e) {
165   - e.printStackTrace();
166   - }
167   - scheduling1.setStop_no(arrivalInfo.getStop_no());
168   - scheduling1.setTs(arrivalInfo.getTs());
169   - scheduling1.setTs_out(arrivalInfo.getTs_out());
  117 + LocalDateTime fcsj_actual=LocalDateTime.parse(scheduling.getSchedule_date_str()+" "+scheduling.getFcsj_actual(),dtf);
  118 + LocalDateTime ddsj_actual=LocalDateTime.parse(scheduling.getSchedule_date_str()+" "+scheduling.getZdsj_actual(),dtf);
  119 + if(ddsj_actual.isBefore(fcsj_actual)){
  120 + ddsj_actual=ddsj_actual.plusDays(1);
  121 + }
  122 + if(fcsj_actual.isBefore(inTime) && ddsj_actual.isAfter(inTime) ){
  123 +
170 124  
171 125 //合并路由表
172   - String keyRoute=scheduling1.getStop_no()+"_"+scheduling1.getXl_dir()+"_"+scheduling1.getXl_bm();
  126 + String keyRoute=arrivalInfo.getStop_no()+"_"+scheduling.getXl_dir()+"_"+scheduling.getXl_bm();
173 127 List<StationRoute> routes=m2.get(keyRoute);
174 128 if(routes!=null && routes.size()>0){
  129 + InOutStation inOutStation=new InOutStation();
  130 + inOutStation.setStop_no(arrivalInfo.getStop_no());
  131 + inOutStation.setInTime(arrivalInfo.getTs());
  132 + inOutStation.setOutTime(arrivalInfo.getTs_out());
175 133 StationRoute route=routes.get(0);
176   - scheduling1.setStation_route_code(route.getStation_route_code());
177   - scheduling1.setStation_name(route.getStation_name());
178   - scheduling1.setStation_code(route.getStation_code());
  134 + inOutStation.setStationRouteCode(route.getStation_route_code());
  135 + inOutStation.setStationName(route.getStation_name());
  136 + List<InOutStation> inOutStations =scheduling.getInOutStations();
  137 + if(inOutStations==null){
  138 + inOutStations =new ArrayList<>();
  139 + }
  140 + inOutStations.add(inOutStation);
  141 + scheduling.setInOutStations(inOutStations);
  142 + schedulingS.add(scheduling);
179 143 }
180   - schedulingS.add(scheduling1);
181   - b++;
182 144 break;
183 145 }
184 146 }
185 147 }
186 148 }
187 149 }
188   - Map<String,List<Scheduling>> getSchedulingS=schedulingS.stream().collect(Collectors.groupingBy(s->s.getJ_name()));
189   - Map<String,List<Scheduling>> getSchedulingSSell=schedulingS.stream().collect(Collectors.groupingBy(s->s.getS_name()));
190   - List<Map<String,List<Scheduling>>> result=new ArrayList<>();
191   - result.add(getSchedulingS);
192   - result.add(getSchedulingSSell);
193   - logger.info("======匹配"+arrivalInfoList.size()+"条======匹配成功 "+b+"条=====耗时=="+(System.currentTimeMillis() - start)/1000 + "秒");
194   - logger.info("===============================预加载数据匹配结束================================");
195   - return result;
196   - }
197   -
198   - /**
199   - * @Description: 根据carid 获取票务数据
200   - * @Param: allData交易记录 isOld是否是残余数据(上次未匹配到的数据)
201   - * @return:
202   - * @Author: YM
203   - * @Date: 2021/10/13
204   - */
205   - public void filterCardList(List<TJRLDB> allData, Boolean isOld) throws Exception {
206   - logger.info("===============================票务数据匹配开始================================");
207   - long start = System.currentTimeMillis();
208   - List<Map> driverCardList = getDriverCardList();//获取司机信息
209   - Map<String,List<Scheduling>> schedulingS =getSchedulingS;
210   - Map<String,List<Scheduling>> schedulingSSell =getSchedulingSSell;
211   - System.out.println(schedulingS.size());
212   - System.out.println(schedulingSSell.size());
213   - DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
214   - int b=0;//用于计算匹配成功的数量
215   - for (int i = 0; i < allData.size(); i++) {
216   - TJRLDB data = allData.get(i);
217   - //通过司售卡找到司机
218   - String carId = data.getTJRLDRVCRDID().length()>8?
219   - data.getTJRLDRVCRDID().substring( data.getTJRLDRVCRDID().length()-8):
220   - data.getTJRLDRVCRDID();
221   - List<Map> collect = driverCardList.stream().filter(map -> map.get("cardno").equals(carId)).collect(Collectors.toList());
222   - String mark="";
223   - String jobCodes = "";
224   - Boolean flag=false;//用来判断是否没有匹配成功
225   - Long cardDate = null;
226   - if (!collect.isEmpty()) {
227   - if (null != collect.get(0).get("jobCode") && null != collect.get(0).get("personalName")) {
228   - String personalName = collect.get(0).get("personalName").toString();//姓名
229   - String[] arr=collect.get(0).get("jobCode").toString().split("-");
230   - jobCodes =arr.length==0?collect.get(0).get("jobCode").toString():arr[arr.length-1];//工号
231   - String time=String.valueOf(data.getTJRLRTIME());//时间
232   - String date=String.valueOf(data.getTJRLRDATE());//日期
233   - cardDate = LocalDateTime.parse(date+" "+time,dtf).toInstant(ZoneOffset.of("+8")).toEpochMilli(); //刷卡时间(时间戳)
234   -
235   - //通过司机姓名获得进出记录
236   - List<Scheduling> schedulingList1=schedulingS.get(personalName);
237   - //没匹配到匹配售票员
238   - if(schedulingList1==null){
239   - schedulingList1=schedulingSSell.get(personalName);
240   - }
241   - Scheduling scheduling = null;
242   -
243   - if(schedulingList1!=null){
244   - Collections.sort(schedulingList1, Comparator.comparing(Scheduling::getTs).reversed());
245   - for (int i1 = 0; i1 < schedulingList1.size(); i1++) {
246   - Scheduling s=schedulingList1.get(i1);
247   - //进站时间小于刷卡时间
248   - if((Long.parseLong(s.getTs())-TIME2*60*1000)<=cardDate){
249   - scheduling=s;
250   - b++;
251   - flag=true;
252   - break;
253   - }
254   - }
255   - }else {
256   - mark="没有匹配的进站记录:"+personalName+" 工号:"+jobCodes;
257   - }
258   -
259   - if (scheduling!=null) {
260   - data.setLineId(scheduling.getXl_bm());
261   - data.setSTATION_FLAG("1");
262   - data.setTJRLUNITID(scheduling.getGs_name());
263   - data.setTJRLSTATID(scheduling.getXl_name());
264   - data.setROAD_FORM_TYPE(scheduling.getBc_type());
265   - data.setUPDOWN(scheduling.getXl_dir());
266   - data.setBUS_CODE(scheduling.getCl_zbh());
267   - data.setBUS_PLATE(scheduling.getCar_plate());
268   - data.setROAD_CODE(scheduling.getLp_name());
269   - data.setDEPART_NAME(scheduling.getQdz_name());
270   - data.setDEPART_CODE(scheduling.getQdz_code());
271   - data.setDEPART_ACTUAL_TIME(scheduling.getFcsj_actual());
272   - data.setREACH_NAME(scheduling.getZdz_name());
273   - data.setREACH_CODE(scheduling.getZdz_code());
274   - data.setREACH_ACTUAL_TIME(scheduling.getZdsj_actual());
275   - if(scheduling.getStation_name()!=null){
276   - data.setLEVELS_FLAG("1");
277   - data.setLEVELS1(scheduling.getStation_route_code());//站点路由序号
278   - data.setLEVELS_NAME1(scheduling.getStation_name());//站点名
279   - data.setLEVELS1_CODE(scheduling.getStop_no());//站点编号
280   - }else {
281   - data.setLEVELS_FLAG("0");
282   - }
283   - } else {
284   - data.setSTATION_FLAG("0");
285   - }
286   - }
287   - }else {
288   - mark="未查工号:"+carId;
289   - data.setSTATION_FLAG("0");
290   - }
291   - if(mark.length()==0 && !flag){
292   - mark="没有匹配的班次 "+jobCodes+"刷卡时间为:"+LocalDateTime.ofEpochSecond(cardDate/1000, 0, ZoneOffset.ofHours(8));
293   - }
294   - data.setMARK(mark);
295   - //如果是新数据 没匹配到 去除这条记录 并放入缓存等到下次继续匹配
296   - if(!isOld && !flag){
297   - List<TJRLDB> m =oldData;
298   - m.add(data);
299   - allData.set(i,null);
300 150  
  151 + List<Scheduling> schedulings=new ArrayList<>();
  152 + m.forEach((k,v)->{
  153 + schedulings.addAll(v);
  154 + });
  155 + List<Scheduling> schedulings2=new ArrayList<>();
  156 + //SELECT device_id,line_id,stop_no,up_down,ts,DATE_FORMAT(FROM_UNIXTIME(ts/1000), '%Y-%m-%d %H:%i:%s') t FROM `bsth_c_arrival_info_2024` where device_id ='8WBCD149'and up_down=1 and line_id=63073
  157 + for (Scheduling scheduling : schedulings) {
  158 + if (scheduling.getInOutStations()==null){
  159 + logger.info(scheduling.getXl_bm()+"_"+scheduling.getXl_name()+"_"+scheduling.getXl_dir()+"_"+scheduling.getFcsj_actual()+"_"+scheduling.getZdsj_actual()+"_"+scheduling.getEquipment_code());
  160 + schedulings2.add(scheduling);
301 161 }
302 162 }
303   - int size=allData.size();
304   - allData.removeIf(Objects::isNull);
305   - //防止数据过多 分批插入
306   - List<List<TJRLDB>> subList = getSubList(2000, allData);
307   - if(!subList.isEmpty()){
308   - subList.forEach(data->{
309   - if (!data.isEmpty()) {
310   - siteMapper1.insertResult(data);
311   - }
312   - });
  163 + logger.info("共"+schedulings.size()+"个班次,未匹配进出站班次"+schedulings2.size());
  164 + List<SchedulingKFK> schedulingKFKS=new ArrayList<>();
  165 + for (Scheduling scheduling : schedulings) {
  166 + SchedulingKFK schedulingKFK=SchedulingKFK.getInstance(scheduling);
  167 + schedulingKFKS.add(schedulingKFK);
313 168 }
314 169  
315   - List<List<TJRLDB>> subList2 = getSubList(500, allData);
316   - if(!subList2.isEmpty()){
317   - subList2.forEach(data->{
  170 + List<List<SchedulingKFK>> subList = getSubList(500, schedulingKFKS);
  171 + if(!subList.isEmpty()){
  172 + subList.forEach(data->{
318 173 if (!data.isEmpty()) {
319   - Map<String, Object> map = new HashMap<>();
320   - map.put("datatype", "passengerflow");
321   - List<TJRL> data2 =new ArrayList<>();
322   - for (TJRLDB tjrldb : data) {
323   - TJRL tjrl= new TJRL(tjrldb);
324   - data2.add(tjrl);
325   - }
326   - map.put("datas", data2);
327   - JSON j=new cn.hutool.json.JSONObject(map);
  174 + Map<String, Object> map2 = new HashMap<>();
  175 + map2.put("datatype", "scheduling");
  176 + map2.put("datas", data);
  177 + JSON j=new JSONObject(map2);
328 178 String json =j.toString();
329   - ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("PDGJ", json);
  179 + /*ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("PDGJ", json);
330 180 future.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
331 181 @Override
332 182 public void onSuccess(SendResult<String, String> result) {
... ... @@ -336,71 +186,48 @@ public class Contrast {
336 186 public void onFailure(Throwable ex) {
337 187 logger.error("kafka发送票务数据异常", ex);
338 188 }
339   - });
  189 + });*/
340 190 }
341 191 });
342 192 }
343   - //如果是上次遗留的数据不管这是是否匹配到都清空
344   - if(isOld){
345   - oldData.clear();
346   - }
347   - logger.warn("======匹配"+size+"条======匹配到"+b+"条=====耗时=="+(System.currentTimeMillis() - start)/1000 + "秒");
348   - logger.info("===============================票务数据匹配结束================================");
  193 + return schedulings;
349 194 }
350 195  
351   -
352   -
353   -
354   -
355   -
356   -
357   - public static int getWeek(String today)throws Exception{
358   - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
359   - Date date = null;
360   - try {
361   - date = format.parse(today);
362   - } catch (ParseException e) {
363   - // TODO Auto-generated catch block
364   - e.printStackTrace();
365   - }
366   -
367   - Calendar calendar = Calendar.getInstance();
368   - calendar.setFirstDayOfWeek(Calendar.MONDAY);
369   - calendar.setTime(date);
370   - return calendar.get(Calendar.WEEK_OF_YEAR);
371   - }
372   -
373   - public static String upperHeadChar(String in) {
374   - String head = in.substring(0, 1);
375   - String out = head.toUpperCase() + in.substring(1, in.length());
376   - return out;
377   - }
378   -
379   - public static String getTransTime(String timeStr) throws Exception{
380   - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd HHmmss");
381   - LocalDateTime date = LocalDateTime.parse(timeStr, df);
382   - DateTimeFormatter f2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
383   - String transTime = f2.format(date);
384   - return transTime;
385   - }
386   -
387   -
388   - public void filterCardListByDB(Map<String,Object> params) throws Exception{
389   - List<TJRLDB> records=siteMapper1.getRecords(params);
390   - for (TJRL record : records) {
391   - String date=record.getTJRLRDATE()+" "+String.format("%06d", Integer.parseInt(record.getTJRLRTIME()));
392   - String s=this.getTransTime(date);
393   - record.setTJRLRDATE(s.split(" ")[0]);
394   - record.setTJRLRTIME(s.split(" ")[1]);
  196 + public List<List<StationRoute>> getStationRoutes(){
  197 + List<List<StationRoute>> list = new ArrayList<>();
  198 + List<StationRoute> StationRouteList=siteMapper1.getStationRoute();
  199 + Map<String, List<StationRoute>> StationRoutes = StationRouteList.stream().collect(Collectors.groupingBy(s->s.getLine_code()+"_"+s.getDirections()));
  200 + StationRoutes.forEach((k,v)->{
  201 + list.add(v);
  202 + });
  203 +
  204 + if(!list.isEmpty()){
  205 + Map<String, Object> map = new HashMap<>();
  206 + map.put("datatype", "stationRoute");
  207 + map.put("datas", list);
  208 + JSON j=new JSONObject(map);
  209 + String json =j.toString();
  210 + /*ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("PDGJ", json);
  211 + future.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
  212 + @Override
  213 + public void onSuccess(SendResult<String, String> result) {
  214 + logger.info("kafka发送票务数据成功");
  215 + }
  216 + @Override
  217 + public void onFailure(Throwable ex) {
  218 + logger.error("kafka发送票务数据异常", ex);
  219 + }
  220 + });*/
395 221 }
396   - filterCardList(records,false);
  222 + System.out.println(">>>>>>>>>>>>>>>>"+list.size());
  223 + return list;
397 224 }
398 225  
399   - public List<List<TJRLDB>> getSubList(int length, List<TJRLDB> list)throws Exception{
  226 + public List<List<SchedulingKFK>> getSubList(int length, List<SchedulingKFK> list)throws Exception{
400 227 int size = list.size();
401 228 int temp = size / length + 1;
402 229 boolean result = size % length == 0;
403   - List<List<TJRLDB>> subList = new ArrayList<>();
  230 + List<List<SchedulingKFK>> subList = new ArrayList<>();
404 231 for (int i = 0; i < temp; i++) {
405 232 if (i == temp - 1) {
406 233 if (result) {
... ... @@ -414,13 +241,5 @@ public class Contrast {
414 241 return subList;
415 242 }
416 243  
417   - public static void main(String[] args) throws Exception{
418   - String carId="B140C906";
419   - Contrast contrast=new Contrast();
420   - List<Map> driverCardList = contrast.getDriverCardList();
421   - List<Map> collect = driverCardList.stream().filter(map -> map.get("cardno").equals(carId)).collect(Collectors.toList());
422   - System.out.println(collect);
423   - }
424   -
425 244  
426 245 }
... ...
src/main/resources/application.properties
1   -server.port=8088
  1 +server.port=8087
2 2  
3   -spring.datasource.db1.jdbc-url=jdbc:mysql://192.170.100.132:3306/control?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
4   -spring.datasource.db1.username=ym
5   -spring.datasource.db1.password=Ym(12345678)
  3 +spring.datasource.db1.jdbc-url=jdbc:mysql://127.0.0.1:3306/control_qp?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
  4 +spring.datasource.db1.username=root
  5 +spring.datasource.db1.password=123456
6 6 spring.datasource.db1.driver-class-name=com.mysql.cj.jdbc.Driver
7 7 spring.datasource.db1.druid.test-on-borrow=true
8 8 spring.datasource.db1.druid.test-while-idle=true
9 9  
10   -spring.datasource.db2.jdbc-url=jdbc:mysql://192.170.100.63:3306/ms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
11   -spring.datasource.db2.username=ym
12   -spring.datasource.db2.password=Ym(12345678)
  10 +spring.datasource.db2.jdbc-url=jdbc:mysql://127.0.0.1:3306/ms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
  11 +spring.datasource.db2.username=root
  12 +spring.datasource.db2.password=123456
13 13 spring.datasource.db2.driver-class-name=com.mysql.cj.jdbc.Driver
14 14 spring.datasource.db2.druid.test-on-borrow=true
15 15 spring.datasource.db2.druid.test-while-idle=true
... ... @@ -21,48 +21,3 @@ logging.level.com.example.demo.mapper=info
21 21 #logging.level.org.mybatis = debug
22 22  
23 23  
24   -#ftp
25   -ftp.root= /home/sftp
26   -ftp.oldFile= /home/oldFile
27   -
28   -
29   -spring.kafka.bootstrap-servers=192.170.100.129:9092
30   -spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
31   -spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
32   -spring.kafka.producer.buffer-memory=33554432
33   -spring.kafka.producer.acks=all
34   -spring.kafka.producer.properties.max.request.size=20971520
35   -
36   -
37   -#
38   -#spring.datasource.db1.jdbc-url=jdbc:mysql://192.168.168.240:3306/pd_control?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
39   -#spring.datasource.db1.username=root
40   -#spring.datasource.db1.password=root2jsp
41   -#spring.datasource.db1.driver-class-name=com.mysql.cj.jdbc.Driver
42   -#spring.datasource.db1.druid.test-on-borrow=true
43   -#spring.datasource.db1.druid.test-while-idle=true
44   -#
45   -#spring.datasource.db2.jdbc-url=jdbc:mysql://localhost:3306/ms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
46   -#spring.datasource.db2.username=root
47   -#spring.datasource.db2.password=1995627a
48   -#spring.datasource.db2.driver-class-name=com.mysql.cj.jdbc.Driver
49   -#spring.datasource.db2.druid.test-on-borrow=true
50   -#spring.datasource.db2.druid.test-while-idle=true
51   -#
52   -#
53   -#mybatis.mapperLocations=classpath:mapping/**/*.xml
54   -#mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
55   -#logging.level.com.example.demo.mapper=debug
56   -#
57   -#
58   -#ftp.root= E:\\data_test
59   -#ftp.oldFile= E:\\oldFile
60   -#
61   -#
62   -#spring.kafka.bootstrap-servers=114.80.178.12:9811
63   -#spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
64   -#spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
65   -#spring.kafka.producer.buffer-memory=33554432
66   -#spring.kafka.producer.acks=all
67   -#spring.kafka.producer.properties.max.request.size=10485760
68   -
... ...
src/main/resources/mapping/db1/Site-mapper1.xml
... ... @@ -6,32 +6,7 @@
6 6  
7 7  
8 8  
9   - <insert id="insertResult" parameterType="List">
10   - INSERT INTO passenger_flow.t_jc_result (
11   - TJRLCARDNO, TJRLINSID, TJRLCDKIND, TJRLPOSID,TJRLRDATE,
12   - TJRLRTIME,TJRLCDBAL,TJRLAMT,TJRLORGAMT,
13   - TJRLTXFG,STATION_FLAG,TJRLUNITID,TJRLSTATID,ROAD_FORM_TYPE, UPDOWN, BUS_CODE,
14   - BUS_PLATE, ROAD_CODE, DEPART_NAME,DEPART_CODE, DEPART_ACTUAL_TIME,
15   - REACH_NAME,REACH_CODE,REACH_ACTUAL_TIME,
16   - LEVELS_FLAG,LEVELS1, LEVELS_NAME1, LEVELS1_CODE,LEVELS2, LEVELS_NAME2,LEVELS2_CODE,MARK,TRAD_ID,
17   - GPS_DATE_TIME1,GPS_DATE_TIME2,B_STATION_ID,PLAN_START_TIME,PLAN_ARRIVE_TIME,ACTUAL_START_TIME,ACTUAL_ARRIVE_TIME,COUNT,TJRLDRVCRDID
18   - )
19   - VALUES
20   - <foreach collection="list" item="em" index="index" separator=",">
21   - ( #{em.TJRLCARDNO}, #{em.TJRLINSID}, #{em.TJRLCDKIND}, #{em.TJRLPOSID},#{em.TJRLRDATE},
22   - #{em.TJRLRTIME},#{em.TJRLCDBAL},#{em.TJRLAMT},#{em.TJRLORGAMT},
23   - #{em.TJRLTXFG},#{em.STATION_FLAG},#{em.TJRLUNITID},#{em.TJRLSTATID},#{em.ROAD_FORM_TYPE}, #{em.UPDOWN},
24   - #{em.BUS_CODE},
25   - #{em.BUS_PLATE}, #{em.ROAD_CODE}, #{em.DEPART_NAME},#{em.DEPART_CODE}, #{em.DEPART_ACTUAL_TIME},
26   - #{em.REACH_NAME},#{em.REACH_CODE},#{em.REACH_ACTUAL_TIME},
27   - #{em.LEVELS_FLAG},#{em.LEVELS1}, #{em.LEVELS_NAME1}, #{em.LEVELS1_CODE},#{em.LEVELS2}, #{em.LEVELS_NAME2}, #{em.LEVELS2_CODE}, #{em.MARK},#{em.TRAD_ID},
28   - #{em.GPS_DATE_TIME1},#{em.GPS_DATE_TIME2},#{em.B_STATION_ID},#{em.PLAN_START_TIME},#{em.PLAN_ARRIVE_TIME},#{em.ACTUAL_START_TIME},#{em.ACTUAL_ARRIVE_TIME},
29   - #{em.COUNT},#{em.TJRLDRVCRDID})
30   - </foreach>
31   - </insert>
32   -
33   -
34   - <select id="getScheduling" resultType="com.example.demo.model.Scheduling">
  9 + <select id="getScheduling" resultType="com.example.demo.model.Scheduling" parameterType="String">
35 10 SELECT CONCAT(gs_name, fgs_name) gs_name,
36 11 xl_name,
37 12 xl_bm,
... ... @@ -51,23 +26,28 @@
51 26 zdz_code,
52 27 zdsj_actual,
53 28 real_exec_date,
  29 + gs_bm,
54 30 cars.equipment_code,
55   - cars.car_plate
56   - FROM control.bsth_c_s_sp_info_real
57   - LEFT JOIN control.bsth_c_cars cars ON cars.inside_code = cl_zbh
58   - WHERE schedule_date_str in ('${startTime}','${endTime}')
  31 + cars.car_plate,
  32 + line.shanghai_linecode
  33 + FROM bsth_c_s_sp_info_real
  34 + LEFT JOIN bsth_c_cars cars ON cars.inside_code = cl_zbh
  35 + LEFT JOIN bsth_c_line line ON xl_bm = line.line_code
  36 + WHERE (bc_type ='normal' or bc_type ='venting') and `status`=2 and schedule_date_str = '${date}'
59 37 order by equipment_code,fcsj_actual
60 38 </select>
61 39  
62 40  
63 41 <select id="getStationRoute" resultType="com.example.demo.model.StationRoute">
64   - SELECT station_route_code,directions,line_code,station_name,station_code
65   - from control.bsth_c_stationroute WHERE destroy=0 ORDER BY station_code,directions,line_code
  42 + SELECT l.shanghai_linecode,r.station_route_code,r.directions,r.line_code,r.station_name,r.station_code
  43 + from bsth_c_line l LEFT JOIN bsth_c_stationroute r on l.line_code=r.line_code
  44 + WHERE l.destroy=0 and r.destroy=0 ORDER BY line_code,directions,station_route_code
66 45 </select>
67 46  
68   - <select id="getRecords" resultType="com.example.demo.model.TJRLDB">
69   - SELECT *
70   - from ${table} where TJRLRDATE >= '${start}' and TJRLRDATE &lt; '${end}'
  47 +
  48 + <select id="getMaxTime" resultType="String" parameterType="String">
  49 + SELECT max(CONCAT(real_exec_date,' ', zdsj_actual)) time FROM `bsth_c_s_sp_info_real`
  50 + where (bc_type ='normal' or bc_type ='venting') and schedule_date_str='${date}'
71 51 </select>
72 52  
73 53  
... ...
src/test/java/com/example/demo/DemoApplicationTests.java
1 1 package com.example.demo;
2 2  
3   -import com.example.demo.service.Analysis;
  3 +
4 4 import com.example.demo.service.Contrast;
5 5 import org.springframework.beans.factory.annotation.Autowired;
6 6 import org.springframework.boot.test.context.SpringBootTest;
... ...