Przeglądaj źródła

搜索站点更新

fllmoyu 4 lat temu
rodzic
commit
794ce71690

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dao/ShiftInfoDAO.java

@@ -21,4 +21,6 @@ public interface ShiftInfoDAO {
     List<ShiftInfo> findByVehicleIdAndStatus(String vehicleId, String status);
 
     List<ShiftInfo> findByRouteIdAndStatus(String routeId, String status);
+
+    List<ShiftInfo> findByRouteIdAndStatusAndStartStationId(String routeId, String status, String startStationId);
 }

+ 4 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/NearbyShiftDTO.java

@@ -15,8 +15,12 @@ public class NearbyShiftDTO {
 
     private String routeName;
 
+    private String startStationId;
+
     private String startStationName;
 
+    private String endStationId;
+
     private String endStationName;
 
     private String currentStationName;

+ 19 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/RouteShiftDTO.java

@@ -0,0 +1,19 @@
+package com.jpsoft.bus.modules.bus.dto;
+
+import lombok.Data;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-4-22 18:19
+ */
+@Data
+public class RouteShiftDTO {
+
+    private String currentStationId;
+
+    private String currentStationStatus;
+
+    private String longitude;
+
+    private String latitude;
+}

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/service/ShiftInfoService.java

@@ -23,4 +23,6 @@ public interface ShiftInfoService {
 	ShiftInfo createShift(VehicleInfo vehicleInfo, Long driverId, String startStationId, String endStationId) throws Exception;
 
     List<ShiftInfo> findByRouteIdAndStatus(String routeId, String status);
+
+    List<ShiftInfo> findByRouteIdAndStatusAndStartStationId(String routeId, String status, String startStationId);
 }

+ 5 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/ShiftInfoServiceImpl.java

@@ -124,4 +124,9 @@ public class ShiftInfoServiceImpl implements ShiftInfoService {
 	public List<ShiftInfo> findByRouteIdAndStatus(String routeId, String status) {
 		return shiftInfoDAO.findByRouteIdAndStatus(routeId,status);
 	}
+
+	@Override
+	public List<ShiftInfo> findByRouteIdAndStatusAndStartStationId(String routeId, String status, String startStationId) {
+		return shiftInfoDAO.findByRouteIdAndStatusAndStartStationId(routeId,status,startStationId);
+	}
 }

+ 10 - 0
common/src/main/resources/mapper/bus/ShiftInfo.xml

@@ -176,4 +176,14 @@
 		and status_ = #{status}
 		]]>
 	</select>
+
+	<select id="findByRouteIdAndStatusAndStartStationId" resultMap="ShiftInfoMap">
+		<![CDATA[
+		select * from bus_shift_info
+		where del_flag = 0
+		and route_id = #{routeId}
+		and status_ = #{status}
+		and start_station_id = #{startStationId}
+		]]>
+	</select>
 </mapper>

+ 1 - 0
web/src/main/java/com/jpsoft/bus/config/WebMvcConfig.java

@@ -81,6 +81,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/mobile/passengerApi/passengerMessage")
 				.excludePathPatterns("/mobile/passengerApi/mergeInfo")
 				.excludePathPatterns("/mobile/passengerApi/passengerRecordList")
+				.excludePathPatterns("/mobile/passengerApi/routeShiftList")
 
 				;
 	}

+ 166 - 3
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

@@ -28,6 +28,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.gavaghan.geodesy.Ellipsoid;
 import org.gavaghan.geodesy.GlobalCoordinates;
 import org.joda.time.DateTime;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -771,9 +772,123 @@ public class PassengerApiController {
 
                 for (StationInfo stationInfo : stationInfos0) {
 
-                    RouteInfo routeInfo0 = routeInfoService.get(stationInfo.getRouteId());
+                    NearbyStationDTO nearbyStationDTO = new NearbyStationDTO();
+                    List<NearbyShiftDTO> nearbyShiftDTOList = new ArrayList<>();
 
-                    List<ShiftInfo> shiftInfoList = shiftInfoService.findByRouteIdAndStatus(stationInfo.getRouteId(), "1");
+                    RouteInfo routeInfo = routeInfoService.get(stationInfo.getRouteId());
+
+                    List<StationInfo> stationInfoList1 = stationInfoService.findByRouteIdAndClassify(routeInfo.getId(),1);
+                    List<StationInfo> stationInfoList2 = stationInfoService.findByRouteIdAndClassify(routeInfo.getId(),3);
+                   // List<StationInfo> stationInfoList1 = stationInfoService.findByRouteId(routeInfo.getId());
+
+                    nearbyStationDTO.setStationName(stationInfo.getName());
+
+                    for (int n = 0;n<2;n++){
+                        String startStationId = stationInfoList1.get(0).getId();
+                        String startStationName = stationInfoList1.get(0).getName();
+                        String endStationId = stationInfoList2.get(0).getId();
+                        String endStationName = stationInfoList2.get(0).getName();
+                        if (n == 1){
+                            startStationId = stationInfoList2.get(0).getId();
+                            startStationName = stationInfoList2.get(0).getName();
+                            endStationId = stationInfoList1.get(0).getId();
+                            endStationName = stationInfoList1.get(0).getName();
+                        }
+                        NearbyShiftDTO nearbyShiftDTO = new NearbyShiftDTO();
+                        String des = null;
+                        nearbyShiftDTO.setRouteId(routeInfo.getId());
+                        nearbyShiftDTO.setRouteName(routeInfo.getName());
+                        nearbyShiftDTO.setStartStationName(startStationName);
+                        nearbyShiftDTO.setStartStationId(startStationId);
+                        nearbyShiftDTO.setEndStationName(endStationName);
+                        nearbyShiftDTO.setEndStationId(endStationId);
+
+                        List<ShiftInfo> shiftInfoList = shiftInfoService.findByRouteIdAndStatusAndStartStationId(routeInfo.getId(),"1",nearbyShiftDTO.getStartStationId());
+                        if (shiftInfoList.size() == 0){
+                            des = "等待发车";
+                        }else {
+
+                            List<StationInfo> stationInfos = stationInfoService.findByRouteId(routeInfo.getId());
+
+
+                            int dis = 0;
+                            ShiftInfo shiftInfo0 = null;
+                            for (ShiftInfo shiftInfo : shiftInfoList){
+
+
+
+                                VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+
+
+                                //距离
+                                GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(vehicleInfo.getLatitude()), Double.valueOf(vehicleInfo.getLongitude()));
+                                GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(latitude), Double.valueOf(longitude));
+
+                                double meter1 = CommonUtil.getDistanceMeter(source, target, Ellipsoid.Sphere);
+
+                                int intMeter = (new Double(meter1)).intValue();
+
+                                if (dis == 0){
+                                    dis = intMeter;
+                                    shiftInfo0 = shiftInfo;
+                                }else {
+                                    if (dis>intMeter){
+                                        dis = intMeter;
+                                        shiftInfo0 = shiftInfo;
+                                    }
+                                }
+                            }
+                            //当前站
+                            StationInfo currentStation = stationInfoService.get(shiftInfo0.getCurrentStationId());
+
+                            //班次当前站下标
+                            int stationIndex = stationInfos.indexOf(currentStation);
+                            //行人当前站
+                            int personStationIndex = stationInfos.indexOf(stationInfo);
+
+                            //判断顺行还是逆行
+                            Boolean tmp = false;
+                            if (shiftInfo0.getStartStationId().equals(stationInfos.get(0).getId())){
+                                //顺行
+                                tmp = true;
+                            }
+                            if (tmp){
+                                if (personStationIndex > stationIndex){
+
+                                    int diff = personStationIndex - stationIndex;
+                                    des = diff + "站 "+ dis + "米";
+
+                                }
+                            }
+                            if (!tmp){
+                                if (personStationIndex < stationIndex){
+                                    int diff = stationIndex - personStationIndex;
+                                    des = diff + "站 "+ dis + "米";
+
+                                }
+                            }
+
+                            if (personStationIndex == stationIndex){
+                                des = "已到站";
+                            }
+                        }
+                        nearbyShiftDTO.setDes(des);
+                        nearbyShiftDTOList.add(nearbyShiftDTO);
+                    }
+                    nearbyStationDTO.setNearbyShiftDTOList(nearbyShiftDTOList);
+
+                    nearbyStationDTOList.add(nearbyStationDTO);
+
+
+
+
+
+
+
+
+
+
+                    /*List<ShiftInfo> shiftInfoList = shiftInfoService.findByRouteIdAndStatus(stationInfo.getRouteId(), "1");
                     if (shiftInfoList.size() > 0) {
                             NearbyStationDTO nearbyStationDTO = new NearbyStationDTO();
                             List<NearbyShiftDTO> nearbyShiftDTOList = new ArrayList<>();
@@ -888,7 +1003,7 @@ public class PassengerApiController {
                         nearbyStationDTOList.add(nearbyStationDTO);
 
 
-                    }
+                    }*/
                 }
             }
 
@@ -907,6 +1022,54 @@ public class PassengerApiController {
     }
 
 
+    @PostMapping("routeShiftList")
+    @ApiOperation(value = "线路上的所有车列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "routeId", value = "线路id", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "startStationId", value = "开始站点id", required = true, paramType = "form")
+    })
+    public MessageResult<List<RouteShiftDTO>> routeShiftList(String routeId,String startStationId) {
+        MessageResult<List<RouteShiftDTO>> messageResult = new MessageResult<>();
+
+        try {
+
+            if (StringUtils.isBlank(routeId) || StringUtils.isBlank(startStationId)){
+                throw new Exception("参数错误");
+            }
+
+            List<RouteShiftDTO> list = new ArrayList<>();
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByRouteIdAndStatusAndStartStationId(routeId,"1",startStationId);
+
+            if (shiftInfoList.size()>0){
+                for (ShiftInfo shiftInfo : shiftInfoList){
+                    RouteShiftDTO routeShiftDTO = new RouteShiftDTO();
+                    BeanUtils.copyProperties(shiftInfo,routeShiftDTO);
+                    VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+                    routeShiftDTO.setLongitude(vehicleInfo.getLongitude());
+                    routeShiftDTO.setLatitude(vehicleInfo.getLatitude());
+                    list.add(routeShiftDTO);
+                }
+            }
+
+
+            messageResult.setData(list);
+            messageResult.setCode(200);
+            messageResult.setResult(true);
+
+
+        }catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
+
     @PostMapping("routeList")
     @ApiOperation(value = "乘客查询线路列表")
     @ApiImplicitParams({