浏览代码

站点增加入口判断。

zhengqiang 4 年之前
父节点
当前提交
5e1675086b

+ 7 - 7
common/src/main/java/com/jpsoft/bus/modules/bus/callback/GpsDataCallbackImpl.java

@@ -270,13 +270,13 @@ public class GpsDataCallbackImpl implements GpsDataCallback {
                             distance = 100;
                         }
 
-                        if (gpsService.matchDistance(currentStation,v,distance)){
-                            shiftInfo.setCurrentStationStatus("1");
-                            shiftInfoService.update(shiftInfo);
-                        }else {
-                            shiftInfo.setCurrentStationStatus("2");
-                            shiftInfoService.update(shiftInfo);
-                        }
+//                        if (gpsService.matchDistance(currentStation,v,distance)){
+//                            shiftInfo.setCurrentStationStatus("1");
+//                            shiftInfoService.update(shiftInfo);
+//                        }else {
+//                            shiftInfo.setCurrentStationStatus("2");
+//                            shiftInfoService.update(shiftInfo);
+//                        }
                     }
                 }catch (Exception ex){
                     log.error(ex.getMessage(),ex);

+ 19 - 16
common/src/main/java/com/jpsoft/bus/modules/bus/entity/StationSubInfo.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,35 +12,37 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
-  描述:bus_station_sub_info的实体类
+ * 描述:bus_station_sub_info的实体类
  */
 @Data
 @ApiModel(value = "bus_station_sub_info的实体类")
 public class StationSubInfo {
-        @ApiModelProperty(value = "")
+    @ApiModelProperty(value = "")
     private String id;
-        @ApiModelProperty(value = "对应站点id")
+    @ApiModelProperty(value = "对应站点id")
     private String stationId;
-        @ApiModelProperty(value = "开始站点id")
+    @ApiModelProperty(value = "开始站点id")
     private String startStationId;
-        @ApiModelProperty(value = "终点站点id")
+    @ApiModelProperty(value = "终点站点id")
     private String endStationId;
-        @ApiModelProperty(value = "经度")
+    @ApiModelProperty(value = "经度")
     private Double longitude;
-        @ApiModelProperty(value = "纬度")
+    @ApiModelProperty(value = "纬度")
     private Double latitude;
-        @ApiModelProperty(value = "创建人")
+    @ApiModelProperty(value = "半径(米)")
+    private Integer radius;
+    @ApiModelProperty(value = "创建人")
     private String createBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "创建时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
     private Date createTime;
-        @ApiModelProperty(value = "更新人")
+    @ApiModelProperty(value = "更新人")
     private String updateBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "更新时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
     private Date updateTime;
-        @ApiModelProperty(value = "是否删除")
+    @ApiModelProperty(value = "是否删除")
     private Boolean delFlag = false;
 }

+ 25 - 45
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/GpsServiceImpl.java

@@ -337,38 +337,23 @@ public class GpsServiceImpl implements GpsService {
                     frontToEnd = false;
                 }
 
-
                 if(frontToEnd){
                     int n = 0;
                     for (int i=0;i<stationInfoList.size();i++) {
                         StationInfo stationInfo = stationInfoList.get(i);
 
-
-                        int distance = stationInfo.getRadius();
-                        if (stationInfo.getRadius() == null){
-                            distance = 100;
-                        }
-
-
                         if(stationInfo.getSortNo() <= currentIndex){
                             //正向行驶时,排序比当前站小的站点不用计算
                             continue;
                         }
 
-                        StationSubInfo stationSubInfo = stationSubInfoService.findByStationIdStartEnd(stationInfo.getId(),shiftInfo.getStartStationId(),shiftInfo.getEndStationId());
-                        if (stationSubInfo != null){
-                            StationInfo stationInfo1 = new StationInfo();
-                            stationInfo1.setLongitude(stationSubInfo.getLongitude());
-                            stationInfo1.setLatitude(stationSubInfo.getLatitude());
-                            if(matchDistance(stationInfo,vehicleInfo,20)){
-                                currentStationId = stationSubInfo.getStationId();
-                                break;
-                            }
-                        }
-
+                        int distance = stationInfo.getRadius();
 
+                        if (stationInfo.getRadius() == null){
+                            distance = 100;
+                        }
 
-                        if(matchDistance(stationInfo,vehicleInfo,distance)){
+                        if(matchDistance(stationInfo,shiftInfo.getStartStationId(),shiftInfo.getEndStationId(),vehicleInfo,distance)){
                            currentStationId = stationInfo.getId();
                            break;
                         }
@@ -388,31 +373,17 @@ public class GpsServiceImpl implements GpsService {
                     for (int i=stationInfoList.size() - 1;i>=0;i--) {
                         StationInfo stationInfo = stationInfoList.get(i);
 
-
-
-
-                        int distance = stationInfo.getRadius();
-                        if (stationInfo.getRadius() == null){
-                            distance = 100;
-                        }
-
                         if (stationInfo.getSortNo() >= currentIndex){
                             //反向行驶时,排序比当前站大的站点不用计算
                             continue;
                         }
 
-                        StationSubInfo stationSubInfo = stationSubInfoService.findByStationIdStartEnd(stationInfo.getId(),shiftInfo.getStartStationId(),shiftInfo.getEndStationId());
-                        if (stationSubInfo != null){
-                            StationInfo stationInfo1 = new StationInfo();
-                            stationInfo1.setLongitude(stationSubInfo.getLongitude());
-                            stationInfo1.setLatitude(stationSubInfo.getLatitude());
-                            if(matchDistance(stationInfo,vehicleInfo,20)){
-                                currentStationId = stationSubInfo.getStationId();
-                                break;
-                            }
+                        int distance = stationInfo.getRadius();
+                        if (stationInfo.getRadius() == null){
+                            distance = 100;
                         }
 
-                        if(matchDistance(stationInfo,vehicleInfo,distance)){
+                        if(matchDistance(stationInfo,shiftInfo.getStartStationId(),shiftInfo.getEndStationId(),vehicleInfo,distance)){
                             currentStationId = stationInfo.getId();
                             break;
                         }
@@ -462,13 +433,6 @@ public class GpsServiceImpl implements GpsService {
         return currentStationId;
     }
 
-    /**
-     * 查询指定范围内的站点
-     * @param stationInfo
-     * @param vehicleInfo
-     * @param distance
-     * @return
-     */
     @Override
     public boolean matchDistance(StationInfo stationInfo,VehicleInfo vehicleInfo,int distance){
         GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(vehicleInfo.getLatitude()), Double.valueOf(vehicleInfo.getLongitude()));
@@ -484,6 +448,22 @@ public class GpsServiceImpl implements GpsService {
         }
     }
 
+    public boolean matchDistance(StationInfo stationInfo,String startStationId,String endStationId,VehicleInfo vehicleInfo,int distance){
+        StationSubInfo stationSubInfo = stationSubInfoService.findByStationIdStartEnd(stationInfo.getId(),startStationId,endStationId);
+
+        if (stationSubInfo != null){
+            StationInfo subStationInfo = new StationInfo();
+            subStationInfo.setLongitude(stationSubInfo.getLongitude());
+            subStationInfo.setLatitude(stationSubInfo.getLatitude());
+
+            if(matchDistance(subStationInfo,vehicleInfo,stationSubInfo.getRadius())){
+                return true;
+            }
+        }
+
+        return matchDistance(stationInfo,vehicleInfo,distance);
+    }
+
     public String encode(String text) {
         try {
             text = URLEncoder.encode(text, "UTF-8");

+ 119 - 115
common/src/main/resources/mapper/bus/StationSubInfo.xml

@@ -1,136 +1,140 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.bus.modules.bus.dao.StationSubInfoDAO">
-	<resultMap id="StationSubInfoMap" type="com.jpsoft.bus.modules.bus.entity.StationSubInfo">
-		<id property="id" column="id_" />
-			<result property="stationId" column="station_id" />
-			<result property="startStationId" column="start_station_id" />
-			<result property="endStationId" column="end_station_id" />
-			<result property="longitude" column="longitude_" />
-			<result property="latitude" column="latitude_" />
-			<result property="createBy" column="create_by" />
-			<result property="createTime" column="create_time" />
-			<result property="updateBy" column="update_by" />
-			<result property="updateTime" column="update_time" />
-			<result property="delFlag" column="del_flag" />
-			</resultMap>
-	<insert id="insert" parameterType="com.jpsoft.bus.modules.bus.entity.StationSubInfo">
-	<!--
-	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
-		select sys_guid() from dual
-	</selectKey>
-	-->
-	<![CDATA[
+    <resultMap id="StationSubInfoMap" type="com.jpsoft.bus.modules.bus.entity.StationSubInfo">
+        <id property="id" column="id_"/>
+        <result property="stationId" column="station_id"/>
+        <result property="startStationId" column="start_station_id"/>
+        <result property="endStationId" column="end_station_id"/>
+        <result property="longitude" column="longitude_"/>
+        <result property="latitude" column="latitude_"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="radius" column="radius_"/>
+    </resultMap>
+    <insert id="insert" parameterType="com.jpsoft.bus.modules.bus.entity.StationSubInfo">
+        <!--
+        <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+            select sys_guid() from dual
+        </selectKey>
+        -->
+        <![CDATA[
 		insert into bus_station_sub_info
-	    (id_,station_id,start_station_id,end_station_id,longitude_,latitude_,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,station_id,start_station_id,end_station_id,longitude_,latitude_,create_by,create_time,update_by,update_time,del_flag,radius_)
 		values
 		(
-#{id,jdbcType=VARCHAR}
-,#{stationId,jdbcType=VARCHAR}
-,#{startStationId,jdbcType=VARCHAR}
-,#{endStationId,jdbcType=VARCHAR}
-,#{longitude,jdbcType= NUMERIC }
-,#{latitude,jdbcType= NUMERIC }
-,#{createBy,jdbcType=VARCHAR}
-,#{createTime,jdbcType= TIMESTAMP }
-,#{updateBy,jdbcType=VARCHAR}
-,#{updateTime,jdbcType= TIMESTAMP }
-,#{delFlag,jdbcType= NUMERIC }
+			#{id,jdbcType=VARCHAR}
+			,#{stationId,jdbcType=VARCHAR}
+			,#{startStationId,jdbcType=VARCHAR}
+			,#{endStationId,jdbcType=VARCHAR}
+			,#{longitude,jdbcType= NUMERIC }
+			,#{latitude,jdbcType= NUMERIC }
+			,#{createBy,jdbcType=VARCHAR}
+			,#{createTime,jdbcType= TIMESTAMP }
+			,#{updateBy,jdbcType=VARCHAR}
+			,#{updateTime,jdbcType= TIMESTAMP }
+			,#{delFlag,jdbcType= NUMERIC }
+            ,#{radius,jdbcType= NUMERIC }
 		)
 	]]>
-	</insert>
-	<delete id="delete" parameterType="string">
-		delete from bus_station_sub_info where id_=#{id,jdbcType=VARCHAR}
-	</delete>
-	<update id="update" parameterType="com.jpsoft.bus.modules.bus.entity.StationSubInfo">
-		update bus_station_sub_info
-		<set>
-				<if test="stationId!=null">
-		station_id=#{stationId,jdbcType=VARCHAR},
-		</if>
-				<if test="startStationId!=null">
-		start_station_id=#{startStationId,jdbcType=VARCHAR},
-		</if>
-				<if test="endStationId!=null">
-		end_station_id=#{endStationId,jdbcType=VARCHAR},
-		</if>
-				<if test="longitude!=null">
-		longitude_=#{longitude,jdbcType= NUMERIC },
-		</if>
-				<if test="latitude!=null">
-		latitude_=#{latitude,jdbcType= NUMERIC },
-		</if>
-				<if test="createBy!=null">
-		create_by=#{createBy,jdbcType=VARCHAR},
-		</if>
-				<if test="createTime!=null">
-		create_time=#{createTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="updateBy!=null">
-		update_by=#{updateBy,jdbcType=VARCHAR},
-		</if>
-				<if test="updateTime!=null">
-		update_time=#{updateTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="delFlag!=null">
-		del_flag=#{delFlag,jdbcType= NUMERIC },
-		</if>
-		</set>
-	where id_=#{id}
-	</update>
-	<select id="get" parameterType="string" resultMap="StationSubInfoMap">
-		select
-id_,station_id,start_station_id,end_station_id,longitude_,latitude_,create_by,create_time,update_by,update_time,del_flag		from bus_station_sub_info where id_=#{0}
-	</select>
-	<select id="exist" parameterType="string" resultType="int">
-		select count(*) from bus_station_sub_info where id_=#{0}
-	</select>
-	<select id="list" resultMap="StationSubInfoMap">
-		select * from bus_station_sub_info
-	</select>
-	<select id="search" parameterType="hashmap" resultMap="StationSubInfoMap">
-		<![CDATA[
+    </insert>
+    <delete id="delete" parameterType="string">
+        delete from bus_station_sub_info where id_=#{id,jdbcType=VARCHAR}
+    </delete>
+    <update id="update" parameterType="com.jpsoft.bus.modules.bus.entity.StationSubInfo">
+        update bus_station_sub_info
+        <set>
+            <if test="stationId!=null">
+                station_id=#{stationId,jdbcType=VARCHAR},
+            </if>
+            <if test="startStationId!=null">
+                start_station_id=#{startStationId,jdbcType=VARCHAR},
+            </if>
+            <if test="endStationId!=null">
+                end_station_id=#{endStationId,jdbcType=VARCHAR},
+            </if>
+            <if test="longitude!=null">
+                longitude_=#{longitude,jdbcType= NUMERIC },
+            </if>
+            <if test="latitude!=null">
+                latitude_=#{latitude,jdbcType= NUMERIC },
+            </if>
+            <if test="createBy!=null">
+                create_by=#{createBy,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime!=null">
+                create_time=#{createTime,jdbcType= TIMESTAMP },
+            </if>
+            <if test="updateBy!=null">
+                update_by=#{updateBy,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime!=null">
+                update_time=#{updateTime,jdbcType= TIMESTAMP },
+            </if>
+            <if test="delFlag!=null">
+                del_flag=#{delFlag,jdbcType= NUMERIC },
+            </if>
+            <if test="radius!=null">
+                radius_=#{radius,jdbcType= NUMERIC },
+            </if>
+        </set>
+        where id_=#{id}
+    </update>
+    <select id="get" parameterType="string" resultMap="StationSubInfoMap">
+        select * from bus_station_sub_info where id_=#{0}
+    </select>
+    <select id="exist" parameterType="string" resultType="int">
+        select count(*) from bus_station_sub_info where id_=#{0}
+    </select>
+    <select id="list" resultMap="StationSubInfoMap">
+        select * from bus_station_sub_info
+    </select>
+    <select id="search" parameterType="hashmap" resultMap="StationSubInfoMap">
+        <![CDATA[
 			select * from bus_station_sub_info
 		]]>
-		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
-			</if>
-			<if test="searchParams.maxLongitude != null">
-				<![CDATA[
+        <where>
+            <if test="searchParams.id != null">
+                and ID_ like #{searchParams.id}
+            </if>
+            <if test="searchParams.maxLongitude != null">
+                <![CDATA[
 				and longitude_ <= #{searchParams.maxLongitude}
 				]]>
-			</if>
-			<if test="searchParams.minLongitude != null">
-				<![CDATA[
+            </if>
+            <if test="searchParams.minLongitude != null">
+                <![CDATA[
 				and longitude_ >= #{searchParams.minLongitude}
 				]]>
-			</if>
-			<if test="searchParams.maxLatitude != null">
-				<![CDATA[
+            </if>
+            <if test="searchParams.maxLatitude != null">
+                <![CDATA[
 				and latitude_ <= #{searchParams.maxLatitude}
 				]]>
-			</if>
-			<if test="searchParams.minLatitude != null">
-				and latitude_ >= #{searchParams.minLatitude}
-			</if>
+            </if>
+            <if test="searchParams.minLatitude != null">
+                and latitude_ >= #{searchParams.minLatitude}
+            </if>
 
-			<if test="searchParams.startStationId != null">
-				and start_station_id = #{searchParams.startStationId}
-			</if>
-			<if test="searchParams.endStationId != null">
-				and end_station_id = #{searchParams.endStationId}
-			</if>
+            <if test="searchParams.startStationId != null">
+                and start_station_id = #{searchParams.startStationId}
+            </if>
+            <if test="searchParams.endStationId != null">
+                and end_station_id = #{searchParams.endStationId}
+            </if>
 
-		</where>
-		<foreach item="sort" collection="sortList"  open="order by" separator=",">
-	        ${sort.name} ${sort.order}
-	 	</foreach>
-	</select>
-	<select id="findByStationIdStartEnd" resultMap="StationSubInfoMap">
-		<![CDATA[
+        </where>
+        <foreach item="sort" collection="sortList" open="order by" separator=",">
+            ${sort.name} ${sort.order}
+        </foreach>
+    </select>
+    <select id="findByStationIdStartEnd" resultMap="StationSubInfoMap">
+        <![CDATA[
 		select * from bus_station_sub_info
 		where del_flag = 0
 		and station_id = #{stationId}
@@ -138,5 +142,5 @@ id_,station_id,start_station_id,end_station_id,longitude_,latitude_,create_by,cr
 		and end_station_id = #{endStationId}
 		limit 1
 		]]>
-	</select>
+    </select>
 </mapper>

+ 1 - 0
web/src/main/java/com/jpsoft/bus/modules/driver/controller/DriverApiController.java

@@ -1121,6 +1121,7 @@ public class DriverApiController {
                     stationSubInfo1.setEndStationId(shiftInfo.getEndStationId());
                     stationSubInfo1.setLongitude(new Double(vehicleInfo.getLongitude()));
                     stationSubInfo1.setLatitude(new Double(vehicleInfo.getLatitude()));
+                    stationSubInfo1.setRadius(20);
                     stationSubInfo1.setCreateTime(new Date());
                     stationSubInfoService.insert(stationSubInfo1);
                 }else {