Browse Source

机车首页地图数据更新

buzhanyi 1 year ago
parent
commit
cf32e614ff

+ 7 - 0
business-service/src/main/java/com/ozs/entity/BaseVehicle.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.common.annotation.Excel;
+import com.ozs.entity.vo.BaseVehicleTerminalDto;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -77,4 +78,10 @@ public class BaseVehicle implements Serializable {
      */
     @Excel(name = "备注")
     private String remark;
+
+    /**
+     * 机车行驶信息
+     */
+    @TableField(exist = false)
+    private BaseVehicleTerminalDto vehicleTerminalDto;
 }

+ 6 - 0
business-service/src/main/java/com/ozs/entity/vo/VehicleTreeVo.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @Author : buzy
@@ -30,4 +31,9 @@ public class VehicleTreeVo extends PageVo implements Serializable {
      * 里程位置
      */
     private Integer mils;
+
+    /**
+     * 关联表中的终端编码
+     */
+    private List<String> terminalCodeList;
 }

+ 7 - 0
business-service/src/main/java/com/ozs/service/BaseVehicleService.java

@@ -44,5 +44,12 @@ public interface BaseVehicleService extends IService<BaseVehicle> {
      */
     List<BaseVehicleTerminalDto> vehicleList();
 
+    /**
+     * 机车首页地图
+     *
+     * @return
+     */
+    List<BaseVehicle> vehicleListDT();
+
     AjaxResult vehicleTerminalUnmount(BaseTerminal baseTerminal);
 }

+ 42 - 0
business-service/src/main/java/com/ozs/service/impl/BaseVehicleServiceImpl.java

@@ -15,6 +15,7 @@ import com.ozs.entity.BaseVehicleTerminal;
 import com.ozs.entity.vo.BaseVehicleTerminalDto;
 import com.ozs.entity.vo.BaseVehicleTerminalVo;
 import com.ozs.entity.vo.BaseVehicleVo;
+import com.ozs.entity.vo.VehicleTreeVo;
 import com.ozs.mapper.BaseDeviceDynamicManagementMapper;
 import com.ozs.mapper.BaseTerminalMapper;
 import com.ozs.mapper.BaseVehicleMapper;
@@ -25,6 +26,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import javax.validation.Validator;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -335,6 +337,46 @@ public class BaseVehicleServiceImpl extends ServiceImpl<BaseVehicleMapper, BaseV
         return dtoList;
     }
 
+    @Override
+    public List<BaseVehicle> vehicleListDT() {
+        //查到所有机车数据
+        List<BaseVehicle> baseVehicles = baseVehicleMapper.selectList(new LambdaQueryWrapper<>());
+        //查到机车关联的终端
+        if (!StringUtils.isEmptySunhh(baseVehicles)) {
+            List<String> terminalCodeList = new ArrayList<>();
+            baseVehicles = baseVehicles.stream().map(o -> {
+                //查到已保存的关联信息
+                BaseTerminal baseTerminal = baseTerminalMapper.selectTerminal(o.getVehicleCode());
+                if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getVehicleCode())) {
+                    terminalCodeList.add(baseTerminal.getVehicleCode());
+                    LambdaQueryWrapper<BaseVehicleTerminal> wrapperBaseVehicleTerminal = new LambdaQueryWrapper<>();
+                    if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getTerminalCode())) {
+                        wrapperBaseVehicleTerminal.eq(BaseVehicleTerminal::getTerminalCode, baseTerminal.getTerminalCode());
+                    }
+                    //根据编码获取终端名称
+                    BaseVehicleTerminal baseVehicleTerminal = baseVehicleTerminalMapper.selectOne(wrapperBaseVehicleTerminal);
+                    if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalName())) {
+                        o.setTerminalName(baseVehicleTerminal.getTerminalName());
+                    }
+                }
+                return o;
+            }).collect(Collectors.toList());
+            VehicleTreeVo vehicleTreeVo = new VehicleTreeVo();
+            vehicleTreeVo.setTerminalCodeList(terminalCodeList);
+            //机车和终端在行驶记录中最后的位置信息
+            List<BaseVehicleTerminalDto> list = baseDeviceDynamicManagementMapper.vehicleTreelist(vehicleTreeVo);
+            for (BaseVehicle vehicle : baseVehicles) {
+                for (BaseVehicleTerminalDto terminalDto : list) {
+                    if (terminalDto.getVehicleCode().equals(vehicle.getVehicleCode())) {
+                        vehicle.setVehicleTerminalDto(terminalDto);
+                        break;
+                    }
+                }
+            }
+        }
+        return baseVehicles;
+    }
+
     @Override
     public AjaxResult vehicleTerminalUnmount(BaseTerminal baseTerminal) {
         LambdaQueryWrapper<BaseTerminal> wrapper = new LambdaQueryWrapper<>();

+ 67 - 55
business-service/src/main/resources/mapper/BaseDeviceDynamicManagementMapper.xml

@@ -2,60 +2,72 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ozs.mapper.BaseDeviceDynamicManagementMapper">
 
-    <select id="list" resultType="com.ozs.entity.vo.BaseCameraManagementDto" parameterType="com.ozs.entity.vo.CameraTreeVo">
-		SELECT
-		l.railway_code AS railwayCode,
-		l.railway_name AS railwayName,
-		a.camera_code AS cameraCode,
-		a.line_dir AS lineDir,
-		a.install_mile AS installMile,
-		a.id AS id
-		FROM
-		base_camera_management AS a inner join
-		base_railway_management AS l on a.railway_code=l.railway_code
-		<where>
-			<if test="railwayCode != null and railwayCode !=''">
-				concat(l.railway_name,a.camera_code)
-				like concat("%",#{railwayCode},"%")
-			</if>
-			<if test="lineDir != null and lineDir != ''">
-				line_dir = #{lineDir}
-			</if>
-			<if test="mils != null and mils != ''">
-				concat(a.install_mile, a.begin_mile, a.end_mile) = #{mils}
-			</if>
-		</where>
-	</select>
+    <select id="vehicleTreelist" resultType="com.ozs.entity.vo.BaseVehicleTerminalDto"
+            parameterType="com.ozs.entity.vo.VehicleTreeVo">
+        SELECT
+        a.id AS id,
+        l.railway_code AS railwayCode,
+        a.terminal_code AS terminalCode,
+        l.vehicle_code AS vehicleCode,
+        l.line_dir AS lineDir,
+        l.travel_mile AS travelMile,
+        l.terminal_longitude as terminalLongitude,
+        l.terminal_latitude as terminalLatitude,
+        l.curren_time
+        FROM
+        base_vehicle_terminal AS a ,
+        (
+        select vp.*
+        from vehicle_position vp
+        where not exists (
+        select 1
+        from vehicle_position df
+        <where>
+            df.curren_time IS NOT NULL
+            <if test="terminalCodeList != null and terminalCodeList.size != 0 ">
+                and df.vehicle_code in
+                <foreach collection="terminalCodeList" item="item" index="index"
+                         separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            and df.vehicle_code = vp.vehicle_code
+            and df.curren_time > vp.curren_time
+        </where>
+        )
+        GROUP BY vp.terminal_code ) AS l
+        <where>
+            a.terminal_code=l.terminal_code
+            <if test="railwayCode != null and railwayCode !=''">
+                and l.railway_code like concat("%",#{railwayCode},"%")
+            </if>
+        </where>
+        ORDER BY l.curren_time DESC
+    </select>
 
-	<select id="vehicleTreelist" resultType="com.ozs.entity.vo.BaseVehicleTerminalDto"
-			parameterType="com.ozs.entity.vo.VehicleTreeVo">
-		SELECT
-		a.id AS id,
-		l.railway_code AS railwayCode,
-		a.terminal_code AS terminalCode,
-		l.vehicle_code AS vehicleCode,
-		l.line_dir AS lineDir,
-		l.travel_mile AS travelMile,
-		l.terminal_longitude as terminalLongitude,
-		l.terminal_latitude as terminalLatitude,
-		l.curren_time
-		FROM
-		base_vehicle_terminal AS a ,
-		(
-		select vp.*
-		from vehicle_position vp
-		where not exists (
-		select 1
-		from vehicle_position df
-		where df.curren_time IS NOT NULL and df.vehicle_code = vp.vehicle_code
-		and df.curren_time > vp.curren_time )
-		GROUP BY vp.vehicle_code ) AS l
-		<where>
-			a.terminal_code=l.terminal_code
-			<if test="railwayCode != null and railwayCode !=''">
-				and l.railway_code like concat("%",#{railwayCode},"%")
-			</if>
-		</where>
-		ORDER BY l.curren_time DESC
-	</select>
+    <select id="list" resultType="com.ozs.entity.vo.BaseCameraManagementDto"
+            parameterType="com.ozs.entity.vo.CameraTreeVo">
+        SELECT
+        l.railway_code AS railwayCode,
+        l.railway_name AS railwayName,
+        a.camera_code AS cameraCode,
+        a.line_dir AS lineDir,
+        a.install_mile AS installMile,
+        a.id AS id
+        FROM
+        base_camera_management AS a inner join
+        base_railway_management AS l on a.railway_code=l.railway_code
+        <where>
+            <if test="railwayCode != null and railwayCode !=''">
+                concat(l.railway_name,a.camera_code)
+                like concat("%",#{railwayCode},"%")
+            </if>
+            <if test="lineDir != null and lineDir != ''">
+                line_dir = #{lineDir}
+            </if>
+            <if test="mils != null and mils != ''">
+                concat(a.install_mile, a.begin_mile, a.end_mile) = #{mils}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 3 - 2
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseVehicleController.java

@@ -31,6 +31,7 @@ import com.ozs.service.BaseVehicleService;
 import com.ozs.system.service.DataScoreUtil;
 import com.ozs.system.service.ISysDictTypeService;
 import com.ozs.web.common.Constant;
+import com.ozs.web.core.util.CameraUtil;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -360,7 +361,7 @@ public class BaseVehicleController extends BaseController {
                 BaseCameraManagement one = cameraManagementService.getOne(bcWrapper);
                 //相机编码和实时流
                 ccMap.put("cameraCode", cameraCode.toString());
-                ccMap.put("currentStream", stream.toString());
+                ccMap.put("currentStream", CameraUtil.getPlayFlv(cameraCode.toString(), one.getChannel()));
                 //行别
                 String lineDirStr = one.getLineDir() == 1 ? "上行" : "下行";
                 ccMap.put("lineDir", lineDirStr);
@@ -381,7 +382,7 @@ public class BaseVehicleController extends BaseController {
     @GetMapping("/vehicleList")
     @Log(title = "机车信息管理", businessType = BusinessType.SELECT)
     public AjaxResult vehicleList() {
-        return AjaxResult.success(baseVehicleService.vehicleList());
+        return AjaxResult.success(baseVehicleService.vehicleListDT());
     }
 
     /**