소스 검색

系统首页

buzhanyi 2 년 전
부모
커밋
c959249a1f

+ 19 - 2
business-service/src/main/java/com/ozs/entity/vo/BaseVehicleTerminalDto.java

@@ -1,6 +1,5 @@
 package com.ozs.entity.vo;
 
-import com.ozs.common.annotation.Excel;
 import com.ozs.common.core.domain.BaseEntity;
 import lombok.Data;
 
@@ -10,7 +9,7 @@ import java.io.Serializable;
  * 车载终端和日志信息表
  */
 @Data
-public class BaseVehicleTerminalDto extends BaseEntity implements Serializable {
+public class BaseVehicleTerminalDto implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -21,6 +20,14 @@ public class BaseVehicleTerminalDto extends BaseEntity implements Serializable {
      */
     private String terminalCode;
 
+    /**
+     * 机车编码
+     */
+    private String vehicleCode;
+    /**
+     * 机车名称
+     */
+    private String vehicleName;
 
     /**
      * 行别
@@ -32,6 +39,16 @@ public class BaseVehicleTerminalDto extends BaseEntity implements Serializable {
      */
     private Integer travelMile;
 
+    /**
+     * 车辆所在经度
+     */
+    private String terminalLongitude;
+
+    /**
+     * 车辆所在纬度
+     */
+    private String terminalLatitude;
+
     /**
      * 线路名称
      */

+ 8 - 0
business-service/src/main/java/com/ozs/entity/vo/HeartbeatVo.java

@@ -14,6 +14,14 @@ public class HeartbeatVo implements Serializable {
      * 车载终端编码
      */
     private String terminalCode;
+    /**
+     * 机车编码
+     */
+    private String vehicleCode;
+    /**
+     * 机车名称
+     */
+    private String vehicleName;
     /**
      * 当前里程位置,单位m
      */

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.entity.BaseTerminal;
 import com.ozs.entity.BaseVehicle;
+import com.ozs.entity.vo.BaseVehicleTerminalDto;
 import com.ozs.entity.vo.BaseVehicleTerminalVo;
 import com.ozs.entity.vo.BaseVehicleVo;
 
@@ -37,4 +38,9 @@ public interface BaseVehicleService extends IService<BaseVehicle> {
     AjaxResult vehicleTerminalAdd(BaseTerminal baseTerminal, String userId);
 
     Boolean isMount(BaseVehicleVo baseVehicleVo);
+
+    /**
+     * /列表,不分页
+     */
+    List<BaseVehicleTerminalDto> vehicleList();
 }

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

@@ -12,6 +12,8 @@ import com.ozs.common.utils.bean.BeanValidators;
 import com.ozs.entity.BaseTerminal;
 import com.ozs.entity.BaseVehicle;
 import com.ozs.entity.BaseVehicleTerminal;
+import com.ozs.entity.vo.BaseCameraManagementDto;
+import com.ozs.entity.vo.BaseVehicleTerminalDto;
 import com.ozs.entity.vo.BaseVehicleTerminalVo;
 import com.ozs.entity.vo.BaseVehicleVo;
 import com.ozs.mapper.BaseDeviceDynamicManagementMapper;
@@ -264,4 +266,22 @@ public class BaseVehicleServiceImpl extends ServiceImpl<BaseVehicleMapper, BaseV
         }
         return false;
     }
+
+    @Override
+    public List<BaseVehicleTerminalDto> vehicleList() {
+        List<BaseVehicleTerminalDto> dtoList = baseDeviceDynamicManagementMapper.vehicleTreelist(null);
+        List<String> strings = dtoList.stream().map(BaseVehicleTerminalDto::getVehicleCode).collect(Collectors.toList());
+        LambdaQueryWrapper<BaseVehicle> bw = new LambdaQueryWrapper<>();
+        bw.in(BaseVehicle::getVehicleCode, strings);
+        List<BaseVehicle> vehicles = baseVehicleMapper.selectList(bw);
+        for (BaseVehicleTerminalDto terminalDto : dtoList) {
+            for (BaseVehicle vehicle : vehicles) {
+                if (terminalDto.getVehicleCode().equals(vehicle.getVehicleCode())) {
+                    terminalDto.setVehicleName(vehicle.getVehicleName());
+                    break;
+                }
+            }
+        }
+        return dtoList;
+    }
 }

+ 3 - 0
business-service/src/main/resources/mapper/BaseDeviceDynamicManagementMapper.xml

@@ -50,8 +50,11 @@
 		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.current_time
 		FROM
 		base_vehicle_terminal AS a ,

+ 34 - 9
vehicle-admin/pom.xml

@@ -26,12 +26,37 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
+        <!-- webSocket web端 消息推送 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <!-- 极光推送 -->
+        <dependency>
+            <groupId>cn.jpush.api</groupId>
+            <artifactId>jpush-client</artifactId>
+            <version>3.3.8</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.jpush.api</groupId>
+            <artifactId>jmessage-client</artifactId>
+            <version>1.1.8</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.jpush.api</groupId>
+            <artifactId>jiguang-common</artifactId>
+            <version>1.1.3</version>
+        </dependency>
 
         <!-- swagger3-->
-<!--        <dependency>-->
-<!--            <groupId>io.springfox</groupId>-->
-<!--            <artifactId>springfox-boot-starter</artifactId>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>io.springfox</groupId>-->
+        <!--            <artifactId>springfox-boot-starter</artifactId>-->
+        <!--        </dependency>-->
 
         <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
         <dependency>
@@ -82,10 +107,10 @@
                 </exclusion>
             </exclusions>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>com.ozs</groupId>-->
-<!--            <artifactId>business-service</artifactId>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.ozs</groupId>-->
+        <!--            <artifactId>business-service</artifactId>-->
+        <!--        </dependency>-->
 
     </dependencies>
 
@@ -114,7 +139,7 @@
                     <failOnMissingWebXml>false</failOnMissingWebXml>
                     <warName>${project.artifactId}</warName>
                 </configuration>
-           </plugin>
+            </plugin>
         </plugins>
         <finalName>${project.artifactId}</finalName>
     </build>

+ 12 - 0
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseVehicleController.java

@@ -310,5 +310,17 @@ public class BaseVehicleController extends BaseController {
         }
         return success(vehicleTree);
     }
+
+    /**
+     * 机车信息表 (首页地图中的机车信息)
+     *
+     * @return
+     */
+    @ApiOperation(value = "机车信息表 列表查询")
+    @GetMapping("/vehicleList")
+    @Log(title = "机车信息管理", businessType = BusinessType.SELECT)
+    public AjaxResult vehicleList() {
+        return AjaxResult.success(baseVehicleService.vehicleList());
+    }
 }
 

+ 45 - 3
vehicle-admin/src/main/java/com/ozs/web/controller/sdk/GeoHazardMonitorTokenController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.common.core.redis.RedisCache;
 import com.ozs.common.exception.base.BaseException;
 import com.ozs.common.utils.ApiTokenUtils;
@@ -34,6 +35,7 @@ import com.ozs.entity.vo.CameraPlayVo;
 import com.ozs.entity.vo.CameraVo;
 import com.ozs.entity.vo.Files;
 import com.ozs.entity.vo.HeartbeatVo;
+import com.ozs.entity.vo.MsgAlarmResp;
 import com.ozs.entity.vo.ParameterVo;
 import com.ozs.entity.vo.QueryAlarmVo;
 import com.ozs.entity.vo.ReleaseAlarmVo;
@@ -57,6 +59,10 @@ import com.ozs.service.MsgAlarmService;
 import com.ozs.service.SvcAddressService;
 import com.ozs.service.TerminalIgnoreAlarmService;
 import com.ozs.service.VehiclePositionService;
+import com.ozs.system.domain.SysUserOnline;
+import com.ozs.system.mapper.SysUserMapper;
+import com.ozs.web.controller.monitor.SysUserOnlineController;
+import com.ozs.web.controller.websocket.WebSocketServer;
 import com.ozs.web.core.util.CameraUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -79,6 +85,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * 1. 获取身份认证控制层
@@ -92,8 +99,8 @@ public class GeoHazardMonitorTokenController {
     public static final String PATTERNS = "^[0-9]*$";
     @Resource
     private ApiTokenUtils apiTokenUtils;
-    @Resource
-    BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
+    @Autowired
+    WebSocketServer webSocketServer;
     @Autowired
     MsgAlarmService msgAlarmService;
     @Autowired
@@ -102,6 +109,8 @@ public class GeoHazardMonitorTokenController {
     SvcAddressService svcAddressService;
     @Autowired
     BaseCameraManagementService baseCameraManagementService;
+    @Autowired
+    SysUserOnlineController sysUserOnlineController;
     //    @Value("${sdk.publish}")
 //    private String sdkUrl;
     @Autowired
@@ -126,6 +135,8 @@ public class GeoHazardMonitorTokenController {
     private ServerConfig serverConfig;
     @Autowired
     private BaseVehicleTerminalService baseVehicleTerminalService;
+    @Resource
+    private SysUserMapper sysUserMapper;
 
     /**
      * 获取web访问令牌
@@ -571,6 +582,28 @@ public class GeoHazardMonitorTokenController {
             LambdaQueryWrapper<BaseVehicleTerminal> terminal = new LambdaQueryWrapper<>();
             terminal.eq(BaseVehicleTerminal::getTerminalCode, vehiclePosition.getTerminalCode());
             boolean update = baseVehicleTerminalService.update(baseVehicleTerminal, terminal);
+            //*******获取终端经度纬度,将车载终端code改为机车的code,便是机车的位置
+            HeartbeatVo heartbeatVoCH = new HeartbeatVo();
+            BeanUtils.copyProperties(heartbeatVo, heartbeatVoCH);
+            //*******将终端关联的机车编码赋值给推送信息对象
+            heartbeatVoCH.setVehicleCode(baseTerminal.getVehicleCode());
+            String content = objStr(heartbeatVoCH);
+            //获取在线用户
+            List<SysUserOnline> rows = (List<SysUserOnline>) sysUserOnlineController.list(null, null).getRows();
+            if (!ObjectUtils.isEmpty(rows)) {
+                //拿到用户userNameList
+                List<String> userNameList = rows.stream().map(SysUserOnline::getUserName).collect(Collectors.toList());
+                LambdaQueryWrapper<SysUser> userWrapper = new LambdaQueryWrapper<>();
+                userWrapper.in(SysUser::getUserName, userNameList);
+                List<SysUser> sysUsers = sysUserMapper.selectList(userWrapper);
+                //拿到用户userIdList
+                List<Long> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                for (Long userid : userIdList) {
+                    //推送给在线用户
+                    webSocketServer.sendOneMessage(String.valueOf(userid), content);
+                }
+            }
+
             //目视距离和里程位置
             if (save && update) {
                 LambdaQueryWrapper<MsgAlarm> queryWrapper = new LambdaQueryWrapper<>();
@@ -912,7 +945,7 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("data", "没有该相机编码的相机");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
             }
-            String flv = CameraUtil.getPlayFlvRtsp(one.getCameraCode(), one.getChannel(),false);
+            String flv = CameraUtil.getPlayFlvRtsp(one.getCameraCode(), one.getChannel(), false);
             map.put("url", flv);
             jsonObject.put("resultCode", 1);
             jsonObject.put("message", "ok");
@@ -1091,6 +1124,15 @@ public class GeoHazardMonitorTokenController {
         }
     }
 
+    private String objStr(HeartbeatVo heartbeatVoCH) {
+        JSONObject obj = new JSONObject();
+        //data
+        obj.put("data", heartbeatVoCH);
+        //code
+        obj.put("code", 151);
+        log.info("【websocket消息】 机车地址信息:" + obj.toJSONString());
+        return obj.toJSONString();
+    }
 
     public static void main(String[] args) {
         JSONObject res = new JSONObject();