|
@@ -50,6 +50,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, TicketDO> imple
|
|
public TicketPageQueryRespDTO pageListTicketQueryByMysql(TicketPageQueryReqDTO requestParam) {
|
|
public TicketPageQueryRespDTO pageListTicketQueryByMysql(TicketPageQueryReqDTO requestParam) {
|
|
System.out.println("TicketPageQueryRespDTO pageListTicketQueryByMysql");
|
|
System.out.println("TicketPageQueryRespDTO pageListTicketQueryByMysql");
|
|
// 准备stationDetails 找到出发站和到达站的名字
|
|
// 准备stationDetails 找到出发站和到达站的名字
|
|
|
|
+ // INSERT INTO `t_station` (`id`, `code`, `name`, `spell`, `region`, `region_name`, `create_time`, `update_time`, `del_flag`)
|
|
|
|
+ // VALUES
|
|
|
|
+ // (1, 'VNP', '北京南', 'beijingnan', 'BJP', '北京', '2023-06-01 20:54:00', '2023-06-01 20:54:00', 0);
|
|
List<StationDO> stationDOList = stationMapper.selectList(Wrappers.emptyWrapper());
|
|
List<StationDO> stationDOList = stationMapper.selectList(Wrappers.emptyWrapper());
|
|
Map<String, String> regionTrainStationMap = new HashMap<>();
|
|
Map<String, String> regionTrainStationMap = new HashMap<>();
|
|
stationDOList.forEach(each -> regionTrainStationMap.put(each.getCode(), each.getRegionName()));
|
|
stationDOList.forEach(each -> regionTrainStationMap.put(each.getCode(), each.getRegionName()));
|
|
@@ -57,8 +60,13 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, TicketDO> imple
|
|
List<Object> stationDetails = new ArrayList<>();
|
|
List<Object> stationDetails = new ArrayList<>();
|
|
stationDetails.add(regionTrainStationMap.get(requestParam.getFromStation()));
|
|
stationDetails.add(regionTrainStationMap.get(requestParam.getFromStation()));
|
|
stationDetails.add(regionTrainStationMap.get(requestParam.getToStation()));
|
|
stationDetails.add(regionTrainStationMap.get(requestParam.getToStation()));
|
|
|
|
+ // 这里可以直接将code值传入数据库 就不需要再转化成map了
|
|
|
|
|
|
// 然后将两个名字作为参数 去 train_station_relation表中查询
|
|
// 然后将两个名字作为参数 去 train_station_relation表中查询
|
|
|
|
+ // INSERT INTO `t_train_station_relation` (`id`, `train_id`, `departure`, `arrival`, `start_region`, `end_region`, `departure_flag`, `arrival_flag`, `departure_time`, `arrival_time`, `create_time`, `update_time`, `del_flag`)
|
|
|
|
+ // VALUES
|
|
|
|
+ // (1665025584123056128, 1, '北京南', '济南西', '北京', '济南', 1, 0, '2023-06-01 09:56:00', '2023-06-01 11:19:00', '2023-06-04 00:00:09', '2023-06-04 00:00:09', 0);
|
|
|
|
+ // select * from t_train_station_relation where start_region = '北京' and end_region = '杭州'
|
|
LambdaQueryWrapper<TrainStationRelationDO> queryWrapper = Wrappers.lambdaQuery(TrainStationRelationDO.class)
|
|
LambdaQueryWrapper<TrainStationRelationDO> queryWrapper = Wrappers.lambdaQuery(TrainStationRelationDO.class)
|
|
.eq(TrainStationRelationDO::getStartRegion, stationDetails.get(0))
|
|
.eq(TrainStationRelationDO::getStartRegion, stationDetails.get(0))
|
|
.eq(TrainStationRelationDO::getEndRegion, stationDetails.get(1));
|
|
.eq(TrainStationRelationDO::getEndRegion, stationDetails.get(1));
|
|
@@ -66,8 +74,12 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, TicketDO> imple
|
|
|
|
|
|
// 将TrainDO和TrainStationRelationDO中的数据整合在一起
|
|
// 将TrainDO和TrainStationRelationDO中的数据整合在一起
|
|
List<TicketListDTO> seatResults = new ArrayList<>();
|
|
List<TicketListDTO> seatResults = new ArrayList<>();
|
|
- Map<Object, Object> regionTrainStationAllMap = new HashMap<>();
|
|
|
|
|
|
+// Map<Object, Object> regionTrainStationAllMap = new HashMap<>();
|
|
|
|
+ // 遍历找到的车次 (4个)
|
|
for (TrainStationRelationDO each : trainStationRelationList) {
|
|
for (TrainStationRelationDO each : trainStationRelationList) {
|
|
|
|
+ // INSERT INTO `t_train` (`id`, `train_number`, `train_type`, `train_tag`, `train_brand`, `start_station`, `end_station`, `start_region`, `end_region`, `sale_time`, `sale_status`, `departure_time`, `arrival_time`, `create_time`, `update_time`, `del_flag`)
|
|
|
|
+ // VALUES
|
|
|
|
+ // (1, 'G35', 0, '0,1,2', '0,6', '北京南', '宁波', '北京', '宁波', '2023-05-15 14:30:00', 0, '2023-06-01 09:56:00', '2023-06-01 15:14:00', '2023-06-01 20:45:00', '2023-06-01 20:45:00', 0);
|
|
TrainDO trainDO = trainMapper.selectById(each.getTrainId());
|
|
TrainDO trainDO = trainMapper.selectById(each.getTrainId());
|
|
|
|
|
|
TicketListDTO result = new TicketListDTO();
|
|
TicketListDTO result = new TicketListDTO();
|
|
@@ -90,21 +102,31 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, TicketDO> imple
|
|
result.setSaleStatus(new Date().after(trainDO.getSaleTime()) ? 0 : 1);
|
|
result.setSaleStatus(new Date().after(trainDO.getSaleTime()) ? 0 : 1);
|
|
result.setSaleTime(convertDateToLocalTime(trainDO.getSaleTime(), "MM-dd HH:mm"));
|
|
result.setSaleTime(convertDateToLocalTime(trainDO.getSaleTime(), "MM-dd HH:mm"));
|
|
seatResults.add(result);
|
|
seatResults.add(result);
|
|
- regionTrainStationAllMap.put(
|
|
|
|
- // TrainId_Departure_Arrival
|
|
|
|
- CacheUtil.buildKey(String.valueOf(each.getTrainId()), each.getDeparture(), each.getArrival()),
|
|
|
|
- JSON.toJSONString(result));
|
|
|
|
|
|
+// regionTrainStationAllMap.put(
|
|
|
|
+// // TrainId_Departure_Arrival
|
|
|
|
+// CacheUtil.buildKey(String.valueOf(each.getTrainId()), each.getDeparture(), each.getArrival()),
|
|
|
|
+// JSON.toJSONString(result));
|
|
}
|
|
}
|
|
// 按照出发时间排序
|
|
// 按照出发时间排序
|
|
seatResults = seatResults.stream().sorted(new TimeStringComparator()).toList();
|
|
seatResults = seatResults.stream().sorted(new TimeStringComparator()).toList();
|
|
|
|
|
|
for (TicketListDTO each : seatResults) {
|
|
for (TicketListDTO each : seatResults) {
|
|
|
|
+ // INSERT INTO `t_train_station_relation` (`id`, `train_id`, `departure`, `arrival`, `start_region`, `end_region`, `departure_flag`, `arrival_flag`, `departure_time`, `arrival_time`, `create_time`, `update_time`, `del_flag`)
|
|
|
|
+ // VALUES
|
|
|
|
+ // (1665025584206942208, 1, '北京南', '杭州东', '北京', '杭州', 1, 0, '2023-06-01 09:56:00', '2023-06-01 14:26:00', '2023-06-04 00:00:09', '2023-06-04 00:00:09', 0);
|
|
|
|
+ // select * from t_train_station_price where departure = '北京南' and arrival = '杭州东' and train_id = '1'
|
|
LambdaQueryWrapper<TrainStationPriceDO> trainStationPriceQueryWrapper = Wrappers.lambdaQuery(TrainStationPriceDO.class)
|
|
LambdaQueryWrapper<TrainStationPriceDO> trainStationPriceQueryWrapper = Wrappers.lambdaQuery(TrainStationPriceDO.class)
|
|
.eq(TrainStationPriceDO::getDeparture, each.getDeparture())
|
|
.eq(TrainStationPriceDO::getDeparture, each.getDeparture())
|
|
.eq(TrainStationPriceDO::getArrival, each.getArrival())
|
|
.eq(TrainStationPriceDO::getArrival, each.getArrival())
|
|
.eq(TrainStationPriceDO::getTrainId, each.getTrainId());
|
|
.eq(TrainStationPriceDO::getTrainId, each.getTrainId());
|
|
List<TrainStationPriceDO> trainStationPriceDOList = trainStationPriceMapper.selectList(trainStationPriceQueryWrapper);
|
|
List<TrainStationPriceDO> trainStationPriceDOList = trainStationPriceMapper.selectList(trainStationPriceQueryWrapper);
|
|
|
|
|
|
|
|
+ // 查询结果
|
|
|
|
+ // INSERT INTO `t_train_station_price` (`id`, `train_id`, `departure`, `arrival`, `seat_type`, `price`, `create_time`, `update_time`, `del_flag`)
|
|
|
|
+ // VALUES
|
|
|
|
+ // (1664877136516444160, 1, '北京南', '杭州东', 0, 231300, '2023-06-03 14:10:16', '2023-06-03 14:10:16', 0);
|
|
|
|
+
|
|
|
|
+ // 这里是3条 对应商务座、一等座、二等座的价格
|
|
List<SeatClassDTO> seatClassList = new ArrayList<>();
|
|
List<SeatClassDTO> seatClassList = new ArrayList<>();
|
|
trainStationPriceDOList.forEach(item -> {
|
|
trainStationPriceDOList.forEach(item -> {
|
|
String trainId = each.getTrainId();
|
|
String trainId = each.getTrainId();
|
|
@@ -115,16 +137,22 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, TicketDO> imple
|
|
// String.valueOf(each.getTrainId()), seatType, item.getDeparture(), item.getArrival());
|
|
// String.valueOf(each.getTrainId()), seatType, item.getDeparture(), item.getArrival());
|
|
Map<String, Map<String, String>> trainStationRemainingTicketMaps = new LinkedHashMap<>();
|
|
Map<String, Map<String, String>> trainStationRemainingTicketMaps = new LinkedHashMap<>();
|
|
String keySuffix = CacheUtil.buildKey(trainId, departure, arrival);
|
|
String keySuffix = CacheUtil.buildKey(trainId, departure, arrival);
|
|
|
|
+ // INSERT INTO `t_train` (`id`, `train_number`, `train_type`, `train_tag`, `train_brand`, `start_station`, `end_station`, `start_region`, `end_region`, `sale_time`, `sale_status`, `departure_time`, `arrival_time`, `create_time`, `update_time`, `del_flag`)
|
|
|
|
+ // VALUES
|
|
|
|
+ // (1, 'G35', 0, '0,1,2', '0,6', '北京南', '宁波', '北京', '宁波', '2023-05-15 14:30:00', 0, '2023-06-01 09:56:00', '2023-06-01 15:14:00', '2023-06-01 20:45:00', '2023-06-01 20:45:00', 0);
|
|
TrainDO trainDO = trainMapper.selectById(each.getTrainId());
|
|
TrainDO trainDO = trainMapper.selectById(each.getTrainId());
|
|
|
|
+ // select departure from t_train_station where train_id = '1'
|
|
LambdaQueryWrapper<TrainStationDO> queryWrapperNew = Wrappers.lambdaQuery(TrainStationDO.class)
|
|
LambdaQueryWrapper<TrainStationDO> queryWrapperNew = Wrappers.lambdaQuery(TrainStationDO.class)
|
|
.eq(TrainStationDO::getTrainId, trainId)
|
|
.eq(TrainStationDO::getTrainId, trainId)
|
|
.select(TrainStationDO::getDeparture);
|
|
.select(TrainStationDO::getDeparture);
|
|
List<TrainStationDO> trainStationDOList = trainStationMapper.selectList(queryWrapperNew);
|
|
List<TrainStationDO> trainStationDOList = trainStationMapper.selectList(queryWrapperNew);
|
|
|
|
+ // 把查询到的出发站放在这个list中
|
|
List<String> trainStationAllList = trainStationDOList.stream().map(TrainStationDO::getDeparture).collect(Collectors.toList());
|
|
List<String> trainStationAllList = trainStationDOList.stream().map(TrainStationDO::getDeparture).collect(Collectors.toList());
|
|
// 计算出发站和终点站中间的站点
|
|
// 计算出发站和终点站中间的站点
|
|
List<RouteDTO> routeDTOList = StationCalculateUtil.throughStation(trainStationAllList, departure, arrival);
|
|
List<RouteDTO> routeDTOList = StationCalculateUtil.throughStation(trainStationAllList, departure, arrival);
|
|
|
|
|
|
// 假设不为空
|
|
// 假设不为空
|
|
|
|
+ // G高铁是0 D动车1 Z直达是2
|
|
switch (trainDO.getTrainType()) {
|
|
switch (trainDO.getTrainType()) {
|
|
// TODO 通过已有列车类型座位枚举重构
|
|
// TODO 通过已有列车类型座位枚举重构
|
|
case 0 -> {
|
|
case 0 -> {
|