Bläddra i källkod

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/GeoHazardMonitor

hexiao 2 år sedan
förälder
incheckning
ded4097f4a
27 ändrade filer med 333 tillägg och 60 borttagningar
  1. 1 6
      business-service/pom.xml
  2. 2 2
      business-service/src/main/java/com/ozs/service/entity/BaseCameraManagement.java
  3. 1 1
      business-service/src/main/java/com/ozs/service/entity/BaseRailwayManagement.java
  4. 8 1
      business-service/src/main/java/com/ozs/service/entity/CameraTree.java
  5. 98 0
      business-service/src/main/java/com/ozs/service/mapper/BaseDictDataMapper.java
  6. 2 0
      business-service/src/main/java/com/ozs/service/mapper/BaseUserMapper.java
  7. 2 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmMapper.java
  8. 6 0
      business-service/src/main/java/com/ozs/service/mapper/MsgWebPushMapper.java
  9. 3 0
      business-service/src/main/java/com/ozs/service/service/BaseUserService.java
  10. 7 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmService.java
  11. 4 0
      business-service/src/main/java/com/ozs/service/service/MsgWebPushService.java
  12. 1 0
      business-service/src/main/java/com/ozs/service/service/impl/BaseDeviceDynamicManagementServiceImpl.java
  13. 5 0
      business-service/src/main/java/com/ozs/service/service/impl/BaseUserServiceImpl.java
  14. 10 5
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmServiceImpl.java
  15. 14 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgWebPushServiceImpl.java
  16. 3 0
      business-service/src/main/resources/mapper/service/BaseUserMapper.xml
  17. 4 1
      business-service/src/main/resources/mapper/service/MsgAlarmMapper.xml
  18. 1 1
      business-service/src/main/resources/mapper/service/MsgAppPushMapper.xml
  19. 12 0
      business-service/src/main/resources/mapper/service/MsgWebPushMapper.xml
  20. 71 3
      hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java
  21. 10 0
      hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseRailwayManagementController.java
  22. 15 16
      hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java
  23. 40 6
      hazard-admin/src/main/java/com/ozs/web/controller/system/SysUserController.java
  24. 0 12
      hazard-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketConteoller.java
  25. BIN
      hazard-admin/src/main/resources/template/baseCameraManagement.xlsx
  26. 10 5
      hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java
  27. 3 1
      hazard-sdk/src/main/java/com/ozs/controller/upload/UploadController.java

+ 1 - 6
business-service/pom.xml

@@ -35,12 +35,7 @@
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.ozs</groupId>
-            <artifactId>base-system</artifactId>
-            <version>1.0-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
+
     </dependencies>
 
 </project>

+ 2 - 2
business-service/src/main/java/com/ozs/service/entity/BaseCameraManagement.java

@@ -61,7 +61,7 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
     /**
      * 行别(1上行2下行)
      */
-    @Excel(name = "行别")
+    @Excel(name = "行别",readConverterExp = "1=上行,2=下行")
     private Integer lineDir;
 
     /**
@@ -109,7 +109,7 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
     /**
      * 是否开启录像(1开启2不开启)
      */
-    @Excel(name = "是否开启录像")
+    @Excel(name = "是否开启录像",readConverterExp = "1=开启,2=不开启")
     private Integer startRecording;
 
     /**

+ 1 - 1
business-service/src/main/java/com/ozs/service/entity/BaseRailwayManagement.java

@@ -47,7 +47,7 @@ public class BaseRailwayManagement extends BaseEntity implements Serializable {
     /**
      * 线路类型(普铁/高铁 )
      */
-    @Excel(name = "线路类型")
+    @Excel(name = "线路类型",readConverterExp = "1=高铁,2=普快")
     private Integer railwayType;
 
     /**

+ 8 - 1
business-service/src/main/java/com/ozs/service/entity/CameraTree.java

@@ -12,11 +12,18 @@ import java.util.List;
  */
 @Data
 @Builder
-public class CameraTree implements Serializable {
+public class CameraTree implements Serializable,Comparable<CameraTree> {
 
     private static final long serialVersionUID = 1L;
     String code;
     String name;
     boolean flay;
+    Integer mileage;
     List<CameraTree> children;
+
+    @Override
+    public int compareTo(CameraTree o) {
+        int i =o.getName().compareTo(o.name);
+        return i;
+    }
 }

+ 98 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseDictDataMapper.java

@@ -0,0 +1,98 @@
+package com.ozs.service.mapper;
+
+import com.ozs.common.core.domain.entity.SysDictData;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 字典表 数据层
+ *
+ * @author hx
+ */
+@Mapper
+public interface BaseDictDataMapper extends JoinBaseMapper<SysDictData> {
+    /**
+     * 根据条件分页查询字典数据
+     *
+     * @param dictData 字典数据信息
+     * @return 字典数据集合信息
+     */
+    public List<SysDictData> selectDictDataList(SysDictData dictData);
+
+    /**
+     * 根据字典类型查询字典数据
+     *
+     * @param dictType 字典类型
+     * @return 字典数据集合信息
+     */
+    public List<SysDictData> selectDictDataByType(String dictType);
+
+    /**
+     * 根据字典类型和字典键值查询字典数据信息
+     *
+     * @param dictType  字典类型
+     * @param dictValue 字典键值
+     * @return 字典标签
+     */
+    public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
+
+    /**
+     * 根据字典数据ID查询信息
+     *
+     * @param dictCode 字典数据ID
+     * @return 字典数据
+     */
+    public SysDictData selectDictDataById(Long dictCode);
+
+    /**
+     * 查询字典数据
+     *
+     * @param dictType 字典类型
+     * @return 字典数据
+     */
+    public int countDictDataByType(String dictType);
+
+    /**
+     * 通过字典ID删除字典数据信息
+     *
+     * @param dictCode 字典数据ID
+     * @return 结果
+     */
+    public int deleteDictDataById(Long dictCode);
+
+    /**
+     * 批量删除字典数据信息
+     *
+     * @param dictCodes 需要删除的字典数据ID
+     * @return 结果
+     */
+    public int deleteDictDataByIds(Long[] dictCodes);
+
+    /**
+     * 新增字典数据信息
+     *
+     * @param dictData 字典数据信息
+     * @return 结果
+     */
+    public int insertDictData(SysDictData dictData);
+
+    /**
+     * 修改字典数据信息
+     *
+     * @param dictData 字典数据信息
+     * @return 结果
+     */
+    public int updateDictData(SysDictData dictData);
+
+    /**
+     * 同步修改字典类型
+     *
+     * @param oldDictType 旧字典类型
+     * @param newDictType 新旧字典类型
+     * @return 结果
+     */
+    public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
+}

+ 2 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseUserMapper.java

@@ -31,4 +31,6 @@ public interface BaseUserMapper extends BaseMapper<BaseUser> {
     Set<String> getUserIdList6();
 
     BaseUser getUser(@Param("userId") String userId);
+    
+    BaseUser getUserName(@Param("userName") String userName);
 }

+ 2 - 0
business-service/src/main/java/com/ozs/service/mapper/MsgAlarmMapper.java

@@ -35,4 +35,6 @@ public interface MsgAlarmMapper extends BaseMapper<MsgAlarm> {
     List<AlarmStatisticMonthDto> listDtoMonth(@Param("railwayCode") String railwayCode, @Param("startMonth") Integer startMonth, @Param("endMonth") Integer endMonth, @Param("alarmType") String alarmType, @Param("userId") String userId);
 
     Map selectCameraCode(@Param("cameraCode") String cameraCode);
+
+    MsgAlarm selectByCameraCode(@Param("cameraCode") String cameraCode);
 }

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

@@ -3,6 +3,9 @@ package com.ozs.service.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ozs.service.entity.MsgWebPush;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Author : sunhh
@@ -10,4 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface MsgWebPushMapper extends BaseMapper<MsgWebPush> {
+    Integer webAlarmNum(@Param("userId") String userId);
+
+    List<MsgWebPush> webAlarm(@Param("userId") String userId);
 }

+ 3 - 0
business-service/src/main/java/com/ozs/service/service/BaseUserService.java

@@ -3,6 +3,7 @@ package com.ozs.service.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseUser;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Set;
 
@@ -14,4 +15,6 @@ public interface BaseUserService extends IService<BaseUser> {
     Set<String> getUserIdList(String createBy, Long deptId);
 
     BaseUser getUser(String userId);
+
+    BaseUser getUserName(@Param("userName") String userName);;
 }

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

@@ -31,4 +31,11 @@ public interface MsgAlarmService extends IService<MsgAlarm> {
 
     //web数据统计 报警月统计数据导出
     List<AlarmStatisticMonthDto> exportExcelMonth(AlarmStatisticResVo alarmStatisticResVo, String userId) throws Exception;
+
+    /**
+     * 通过相机编码查询未解除预警信息
+     * @param cameraCode
+     * @return
+     */
+    MsgAlarm selectByCameraCode(String cameraCode);
 }

+ 4 - 0
business-service/src/main/java/com/ozs/service/service/MsgWebPushService.java

@@ -4,10 +4,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.service.entity.MsgAppPush;
 import com.ozs.service.entity.MsgWebPush;
 
+import java.util.Map;
+
 /**
  * @Author : sunhh
  * @create 2023/3/15 14:33
  */
 public interface MsgWebPushService extends IService<MsgWebPush> {
     int read(MsgWebPush msgWebPush);
+
+    Map webAlarm(String userId);
 }

+ 1 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseDeviceDynamicManagementServiceImpl.java

@@ -65,6 +65,7 @@ public class BaseDeviceDynamicManagementServiceImpl extends ServiceImpl<BaseDevi
                         .code(mils + "-" + (o.getLineDir().equals("1") ? "上行" : "下行"))
                         .name(mils + "-" + (o.getLineDir().equals("1") ? "上行" : "下行"))
                         .flay(true)
+                        .mileage(o.getInstallMile())
                         .children(new ArrayList<>())
                         .build();
 

+ 5 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseUserServiceImpl.java

@@ -58,4 +58,9 @@ public class BaseUserServiceImpl extends ServiceImpl<BaseUserMapper, BaseUser> i
     public BaseUser getUser(String userId) {
         return baseUserMapper.getUser(userId);
     }
+
+    @Override
+    public BaseUser getUserName(String userName) {
+        return baseUserMapper.getUserName(userName);
+    }
 }

+ 10 - 5
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmServiceImpl.java

@@ -8,10 +8,10 @@ import com.ozs.service.entity.vo.AlarmStatisticDto;
 import com.ozs.service.entity.vo.AlarmStatisticMonthDto;
 import com.ozs.service.entity.vo.AlarmStatisticResVo;
 import com.ozs.service.entity.vo.AlarmStatisticVo;
+import com.ozs.service.mapper.BaseDictDataMapper;
 import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.service.MsgAlarmService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ozs.system.mapper.SysDictDataMapper;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
@@ -38,7 +38,7 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
     @Autowired
     MsgAlarmMapper msgAlarmMapper;
     @Autowired
-    SysDictDataMapper sysDictDataMapper;
+    BaseDictDataMapper baseDictDataMapper;
 
     public static IPage listToPage(List list, int pageNum, int pageSize) {
         List pageList = new ArrayList<>();
@@ -72,11 +72,11 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
                 alarmStatisticResVo.getEndMonth(), alarmStatisticResVo.getAlarmType(), userId);
         listDto.forEach(l -> {
             String alarmType = l.getAlarmType();
-            String alarmTypeValue = sysDictDataMapper.selectDictLabel("sys_alarm_type", alarmType);
+            String alarmTypeValue = baseDictDataMapper.selectDictLabel("sys_alarm_type", alarmType);
             l.setAlarmTypeValue(alarmTypeValue);
 
             String lineDir = l.getLineDir();
-            String lineDirValue = sysDictDataMapper.selectDictLabel("sys_line_dir", lineDir);
+            String lineDirValue = baseDictDataMapper.selectDictLabel("sys_line_dir", lineDir);
             l.setLineDirValue(lineDirValue);
         });
         return listDto;
@@ -88,10 +88,15 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
                 alarmStatisticResVo.getEndMonth(), alarmStatisticResVo.getAlarmType(), userId);
         listDto.forEach(l -> {
             String alarmType = l.getAlarmType();
-            String alarmTypeValue = sysDictDataMapper.selectDictLabel("sys_alarm_type", alarmType);
+            String alarmTypeValue = baseDictDataMapper.selectDictLabel("sys_alarm_type", alarmType);
             l.setAlarmTypeValue(alarmTypeValue);
         });
         return listDto;
     }
 
+    @Override
+    public MsgAlarm selectByCameraCode(String cameraCode) {
+        return msgAlarmMapper.selectByCameraCode(cameraCode);
+    }
+
 }

+ 14 - 0
business-service/src/main/java/com/ozs/service/service/impl/MsgWebPushServiceImpl.java

@@ -7,6 +7,10 @@ import com.ozs.service.service.MsgWebPushService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Author : sunhh
  * @create 2023/3/15 14:34
@@ -22,4 +26,14 @@ public class MsgWebPushServiceImpl extends ServiceImpl<MsgWebPushMapper, MsgWebP
         msgWebPush.setStatus(2);
         return msgWebPushMapper.updateById(msgWebPush);
     }
+
+    @Override
+    public Map webAlarm(String userId) {
+        Map<String, Object> webAlarmMap = new HashMap<>();
+        Integer webAlarmNum = msgWebPushMapper.webAlarmNum(userId);
+        List<MsgWebPush> webAlarm = msgWebPushMapper.webAlarm(userId);
+        webAlarmMap.put("webAlarmNum", webAlarmNum);
+        webAlarmMap.put("webAlarm", webAlarm);
+        return webAlarmMap;
+    }
 }

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

@@ -64,4 +64,7 @@
     <select id="getUser" resultType="com.ozs.service.entity.BaseUser" parameterType="java.lang.String">
         select user_id userId, dept_id deptId, data_permission dataPermission from sys_user where user_id = #{userId}
     </select>
+    <select id="getUserName" resultType="com.ozs.service.entity.BaseUser" parameterType="java.lang.String">
+        select user_id userId, dept_id deptId, data_permission dataPermission from sys_user where user_name = #{userName}
+    </select>
 </mapper>

+ 4 - 1
business-service/src/main/resources/mapper/service/MsgAlarmMapper.xml

@@ -220,10 +220,13 @@
             and YEAR(a.alarm_time) = YEAR(SYSDATE())
         </where>
         group by a.alarm_id,MONTH(a.alarm_time)
-
     </select>
 
     <select id="selectCameraCode" parameterType="java.lang.String" resultType="java.util.Map">
         select is_lock isLock, max(alarm_time) from msg_alarm where camera_code = #{cameraCode}
     </select>
+
+    <select id="selectByCameraCode" parameterType="java.lang.String" resultType="com.ozs.service.entity.MsgAlarm">
+        select *, max(alarm_time) from msg_alarm where camera_code = #{cameraCode}
+    </select>
 </mapper>

+ 1 - 1
business-service/src/main/resources/mapper/service/MsgAppPushMapper.xml

@@ -77,6 +77,6 @@
 
 
     <select id="appAlarmNum" parameterType="java.lang.String" resultType="java.lang.Integer">
-        select count(*) from msg_app_push where status = 0 and receive_by = #{userId}
+        select count(*) from msg_app_push where status = 1 and receive_by = #{userId}
     </select>
 </mapper>

+ 12 - 0
business-service/src/main/resources/mapper/service/MsgWebPushMapper.xml

@@ -0,0 +1,12 @@
+<?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" >
+<mapper namespace="com.ozs.service.mapper.MsgWebPushMapper">
+
+    <select id="webAlarmNum" parameterType="java.lang.String" resultType="java.lang.Integer">
+        select count(*) from msg_web_push where status = 1 and receive_by = #{userId}
+    </select>
+
+    <select id="webAlarm" parameterType="java.lang.String" resultType="com.ozs.service.entity.MsgWebPush">
+        select * from msg_web_push where status = 1 and receive_by = #{userId}
+    </select>
+</mapper>

+ 71 - 3
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -11,7 +11,10 @@ import com.ozs.common.core.domain.entity.SysDept;
 import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.common.core.domain.model.LoginUser;
 import com.ozs.common.exception.base.BaseException;
+import com.ozs.common.utils.ApiTokenUtils;
 import com.ozs.common.utils.AppendUtils;
+import com.ozs.common.utils.ChineseToPingyin;
+import com.ozs.common.utils.IdempotenceUtils;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.file.FileUtils;
 import com.ozs.common.utils.http.HttpUtils;
@@ -55,10 +58,14 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.InputStream;
+import java.text.Collator;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 import java.util.stream.Collectors;
 
 /**
@@ -87,6 +94,8 @@ public class BaseCameraManagementController extends BaseController {
     private ServerConfig serverConfig;
     @Autowired
     private CaneraConfig caneraConfig;
+    @Autowired
+    private IdempotenceUtils idempotenceUtils;
 
     /**
      * 所有相机列表+权限
@@ -99,6 +108,34 @@ public class BaseCameraManagementController extends BaseController {
         return AjaxResult.success(baseCameraManagements);
     }
 
+    @PostMapping(value = "/homeGetInfo")
+    @ApiOperation("根据相机ID、是否解除 获取相机信息、未解除信息")
+    public AjaxResult homeGetInfo(@PathVariable Long id, @PathVariable Integer isLock, @PathVariable String cameraCode) {
+        // isLock  报警是否解除 1已解除2未解除
+        if (!StringUtils.isEmpty(isLock) && isLock == 1) {
+            BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
+            LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
+            if (!ObjectUtils.isEmpty(baseCameraManagement.getRailwayCode())) {
+                queryWrapper.eq(BaseRailwayManagement::getRailwayCode, baseCameraManagement.getRailwayCode());
+            }
+            BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+            SysDept sysDept = deptService.selectDeptById(baseCameraManagement.getDeptId());
+            baseCameraManagement.setDeptName(sysDept.getDeptName());
+            baseCameraManagement.setRailwayName(baseRailwayManagement.getRailwayName());
+            String mils = AppendUtils.stringAppend(baseCameraManagement.getInstallMile());
+            baseCameraManagement.setInstallMiles(mils);
+            String end = AppendUtils.stringAppend(baseCameraManagement.getEndMile());
+            baseCameraManagement.setEndMiles(end);
+            String begin = AppendUtils.stringAppend(baseCameraManagement.getBeginMile());
+            baseCameraManagement.setBeginMiles(begin);
+            return AjaxResult.success(baseCameraManagement);
+        } else if (!StringUtils.isEmpty(isLock) && isLock == 2) {
+            MsgAlarm msgAlarm = msgAlarmService.selectByCameraCode(cameraCode);
+            return AjaxResult.success(msgAlarm);
+        }
+        return null;
+    }
+
     /**
      * 相机台账管理分页
      *
@@ -188,6 +225,11 @@ public class BaseCameraManagementController extends BaseController {
     @ApiOperation("新增相机台账管理信息")
     @Transactional
     public AjaxResult saveAccountManagement(@RequestBody BaseCameraManagement baseCameraManagement) {
+        String idempotence = idempotenceUtils.getIdempotence(baseCameraManagement.getCameraCode());
+        if (StringUtils.isNotEmpty(idempotence)){
+            return  error("你的网络卡顿,请不要一直添加!!!");
+        }
+        idempotenceUtils.createIdempotence(baseCameraManagement.getCameraCode());
         LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
         if (!ObjectUtils.isEmpty(baseCameraManagement.getCameraCode())) {
             lw.eq(BaseCameraManagement::getCameraCode, baseCameraManagement.getCameraCode());
@@ -216,8 +258,10 @@ public class BaseCameraManagementController extends BaseController {
             baseCameraManagement.setStartRecording(2);
         }
         if (baseCameraManagementService.save(baseCameraManagement) && baseDeviceDynamicManagementService.save(baseDynamicManagement)) {
+            idempotenceUtils.deleteIdempotence(baseCameraManagement.getCameraCode());
             return AjaxResult.success();
         }
+        idempotenceUtils.deleteIdempotence(baseCameraManagement.getCameraCode());
         return AjaxResult.error();
     }
 
@@ -422,8 +466,32 @@ public class BaseCameraManagementController extends BaseController {
     public AjaxResult cameraTree(@RequestParam(value = "name", required = false) String name) {
         CameraTree cameraTree = baseDeviceDynamicManagementService.cameraTree(name);
         List<CameraTree> children = cameraTree.getChildren();
+        children.sort(new Comparator<CameraTree>() {
+            @Override
+            public int compare(CameraTree o1, CameraTree o2) {
+                String name1 = ChineseToPingyin.convertHanziToPinyin(o1.getName());
+                String substring1 = name1.substring(0, 1);
+                String name2 = ChineseToPingyin.convertHanziToPinyin(o2.getName());
+                String substring2 = name2.substring(0, 1);
+                return substring1.compareTo(substring2);
+            }
+        });
+
+
         for (CameraTree child : children) {
             List<CameraTree> children1 = child.getChildren();
+            children1.sort(new Comparator<CameraTree>() {
+                @Override
+                public int compare(CameraTree o1, CameraTree o2) {
+                  int i=  o1.getMileage() - o2.getMileage();
+                  if (i==0) {
+                      String[] split = o1.getName().split("-");
+                      return  "上行".equals(split[1])?-1:1;
+                  }else {
+                      return i;
+                  }
+                }
+            });
             for (CameraTree tree : children1) {
                 List<CameraTree> children2 = tree.getChildren();
                 if (children2.size() < 2) {
@@ -487,7 +555,7 @@ public class BaseCameraManagementController extends BaseController {
             queryWrapper.orderByDesc(MsgAlarm::getCreateTime);
         }
         List<MsgAlarm> msgAlarmList = msgAlarmService.list(queryWrapper);
-        if (msgAlarmList.size()>0) {
+        if (msgAlarmList.size() > 0) {
             MsgAlarm msgAlarm = msgAlarmList.get(0);
             LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
             if (!ObjectUtils.isEmpty(cameraCode)) {
@@ -513,8 +581,8 @@ public class BaseCameraManagementController extends BaseController {
             msgAlarmResp.setLineDir(baseCameraManagement.getLineDir());
             msgAlarmResp.setAlarmMile(baseCameraManagement.getInstallMile().toString());
             return AjaxResult.success(msgAlarmResp);
-        }else {
-            return  error("该相机没有报警消息");
+        } else {
+            return error("该相机没有报警消息");
         }
     }
 }

+ 10 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseRailwayManagementController.java

@@ -9,6 +9,7 @@ import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.core.domain.entity.SysDept;
 import com.ozs.common.core.domain.entity.SysDictData;
 import com.ozs.common.utils.AppendUtils;
+import com.ozs.common.utils.IdempotenceUtils;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.file.FileUtils;
 import com.ozs.common.utils.poi.ExcelUtil;
@@ -58,6 +59,8 @@ public class BaseRailwayManagementController extends BaseController {
     private ISysDictTypeService dictTypeService;
     @Autowired
     private BaseCameraManagementService baseCameraManagementService;
+    @Autowired
+    private IdempotenceUtils idempotenceUtils;
 
     /**
      * 线路管理表分页
@@ -148,6 +151,11 @@ public class BaseRailwayManagementController extends BaseController {
     @PutMapping("/editRailwayManagement")
     @ApiOperation("修改线路管理表信息")
     public AjaxResult editLineManagement(@RequestBody BaseRailwayManagement baseRailwayManagement) {
+        String idempotence = idempotenceUtils.getIdempotence(baseRailwayManagement.getRailwayCode());
+        if (StringUtils.isNotEmpty(idempotence)){
+            return  error("你的网络卡顿,请不要一直添加!!!");
+        }
+        idempotenceUtils.createIdempotence(baseRailwayManagement.getRailwayCode());
         BaseRailwayManagement baseRailwayManagement1 = baseRailwayManagementService.getById(baseRailwayManagement.getId());
         if (ObjectUtils.isEmpty(baseRailwayManagement1)) {
             return error("主键不存在");
@@ -162,8 +170,10 @@ public class BaseRailwayManagementController extends BaseController {
         }
         baseRailwayManagement.setUpdateBy(getUserId());
         if (baseRailwayManagementService.updateById(baseRailwayManagement)) {
+            idempotenceUtils.deleteIdempotence(baseRailwayManagement.getRailwayCode());
             return AjaxResult.success();
         }
+        idempotenceUtils.deleteIdempotence(baseRailwayManagement.getRailwayCode());
         return AjaxResult.error();
     }
 

+ 15 - 16
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java

@@ -15,6 +15,7 @@ import com.ozs.service.entity.*;
 import com.ozs.service.entity.vo.*;
 import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.service.*;
+import com.ozs.system.service.ISysDictDataService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -48,6 +49,7 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -72,10 +74,21 @@ public class MsgAlarmController extends BaseController {
     BaseCameraManagementService baseCameraManagementService;
     @Autowired
     BaseRailwayManagementService baseRailwayManagementService;
-    @Value("${base.imgUrl:http://124.71.171.71:18801/picbucket}")
-    private String imgUrl;
     @Autowired
     private MsgWebPushService msgWebPushService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+
+    /**
+     * web报警未读消息个数+未读消息列表
+     */
+    @GetMapping("/webAlarm")
+    @ApiOperation("app报警推送次数")
+    public AjaxResult webAlarmNum() {
+        String userId = getUserId();
+        Map webAlarm = msgWebPushService.webAlarm(userId);
+        return AjaxResult.success(webAlarm);
+    }
 
     /**
      * web消息已读
@@ -142,13 +155,6 @@ public class MsgAlarmController extends BaseController {
         IPage<MsgAlarm> page = msgAlarmService.page(new Page<>(msgAlarmVo.getPageNum(), msgAlarmVo.getPageSize()), lw);
         if(!ObjectUtils.isEmpty(page) && !ObjectUtils.isEmpty(page.getRecords())){
             List<MsgAlarm> dto1 = page.getRecords().stream().map(o -> {
-                ArrayList<String> objects = new ArrayList<>();
-                String[] split = o.getImageUrl().split(";");
-                for (String s : split) {
-                    s = imgUrl + s;
-                    objects.add(s);
-                }
-                o.setImageUrls(objects);
                 LambdaQueryWrapper<BaseCameraManagement> cameraManagementLambdaQueryWrapper = new LambdaQueryWrapper<BaseCameraManagement>();
                 if (!ObjectUtils.isEmpty(o.getCameraCode())) {
                     cameraManagementLambdaQueryWrapper.eq(BaseCameraManagement::getCameraCode, o.getCameraCode());
@@ -200,13 +206,6 @@ public class MsgAlarmController extends BaseController {
         String mile = AppendUtils.stringAppend(baseCameraManagement.getInstallMile());
         msgAlarmResp.setAlarmMile(mile);
         msgAlarmResp.setInstallLongitude(baseCameraManagement.getInstallLongitude()+","+baseCameraManagement.getInstallLatitude());
-        ArrayList<String> objects = new ArrayList<>();
-        String[] split = msgAlarm.getImageUrl().split(";");
-        for (String s : split) {
-            s = imgUrl + s;
-            objects.add(s);
-        }
-        msgAlarmResp.setImageUrls(objects);
         return AjaxResult.success(msgAlarmResp);
     }
 

+ 40 - 6
hazard-admin/src/main/java/com/ozs/web/controller/system/SysUserController.java

@@ -2,6 +2,7 @@ package com.ozs.web.controller.system;
 
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -10,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ozs.common.core.domain.entity.SysUserUpdate;
 import com.ozs.common.core.domain.vo.SysUserVo;
 import com.ozs.common.utils.AppendUtils;
 import com.ozs.common.utils.file.FileUtils;
@@ -86,6 +88,7 @@ public class SysUserController extends BaseController {
      */
     @ApiOperation(value = "获取用户列表")
     @PostMapping("/list")
+    @PreAuthorize("@ss.hasPermi('system:user:list')")
     public AjaxResult list(@RequestBody SysUserVo sysUserVo) {
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<SysUser>();
         if (!ObjectUtils.isEmpty(sysUserVo.getUserName())) {
@@ -103,9 +106,9 @@ public class SysUserController extends BaseController {
         if (!ObjectUtils.isEmpty(sysUserVo.getStatus())) {
             wrapper.eq(SysUser::getStatus, sysUserVo.getStatus());
         }
-       
+
         IPage<SysUser> page = userService.page(new Page<>(sysUserVo.getPageNum(), sysUserVo.getPageSize()), wrapper);
-        if(!ObjectUtils.isEmpty(page) && !ObjectUtils.isEmpty(page.getRecords())){
+        if (!ObjectUtils.isEmpty(page) && !ObjectUtils.isEmpty(page.getRecords())) {
             List<SysUser> dto1 = page.getRecords().stream().map(o -> {
                 SysDept sysDept = deptService.selectDeptById(o.getDeptId());
                 if (!ObjectUtils.isEmpty(sysDept)) {
@@ -202,7 +205,7 @@ public class SysUserController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
-    @RequestMapping(value ="/edit",method = RequestMethod.PUT)
+    @RequestMapping(value = "/edit", method = RequestMethod.PUT)
     public AjaxResult edit(@Validated @RequestBody SysUser user) {
         boolean matches = user.getPassword().matches(PW_PATTERN);
         if (!matches) {
@@ -220,9 +223,40 @@ public class SysUserController extends BaseController {
             return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
         }
         user.setUpdateBy(getUsername());
+        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         return toAjax(userService.updateUsers(user));
     }
 
+    /**
+     * 修改用户-web修改个人信息
+     */
+//    @PreAuthorize("@ss.hasPermi('system:user:edit')")
+    @Log(title = "用户管理", businessType = BusinessType.UPDATE)
+    @RequestMapping(value = "/updateUser", method = RequestMethod.PUT)
+    public AjaxResult updateUser(@RequestBody SysUserUpdate user) {
+        if (!StringUtils.isEmpty(user) && !StringUtils.isEmpty(user.getPassword())) {
+            boolean matches = user.getPassword().matches(PW_PATTERN);
+            if (!matches) {
+                return error("您的密码太简单!需要包含大小英文、数字、特殊字符、并且长度8-20");
+            }
+        }
+        userService.checkUserAllowedUpdate(user);
+        userService.checkUserDataScope(user.getId());
+        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUniqueUpdate(user))) {
+            return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
+        } else if (StringUtils.isNotEmpty(user.getPhoneNum())
+                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUniqueUpdate(user))) {
+            return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
+        } else if (StringUtils.isNotEmpty(user.getEmail())
+                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUniqueUpdate(user))) {
+            return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+        }
+        user.setUpdateBy(getUsername());
+        user.setUpdateTime(new Date());
+        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+        return toAjax(userService.updateUsersUpdate(user));
+    }
+
     /**
      * 删除用户
      */
@@ -319,10 +353,10 @@ public class SysUserController extends BaseController {
      */
     @GetMapping("/dataPermission/{id}/{dataPermission}")
     @ApiOperation("数据权限分配")
-    public AjaxResult dataPermission(@PathVariable("id") Long id,@PathVariable("dataPermission") Integer dataPermission) {
-        if (userService.dataPermission(id,dataPermission)){
+    public AjaxResult dataPermission(@PathVariable("id") Long id, @PathVariable("dataPermission") Integer dataPermission) {
+        if (userService.dataPermission(id, dataPermission)) {
             return success();
-        }else {
+        } else {
             return error();
         }
     }

+ 0 - 12
hazard-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketConteoller.java

@@ -42,8 +42,6 @@ public class WebSocketConteoller extends BaseController {
     private BaseCameraManagementService baseCameraManagementService;
     @Autowired
     private UserRegistrationidService userRegistrationidService;
-    @Value("${base.imgUrl:http://124.71.171.71:18801/picbucket}")
-    private String imgUrl;
 
     @ResponseBody
     @PostMapping("/publish")
@@ -69,16 +67,6 @@ public class WebSocketConteoller extends BaseController {
         msgAlarmResp.setRailwayName(cameraName != null ? cameraName : "");
         msgAlarmResp.setLineDirStr(baseCameraManagement.getLineDir() == 1 ? "上行" : "下行");
         msgAlarmResp.setAlarmTime(msgAlarm.getAlarmTime() != null ? msgAlarm.getAlarmTime() : new Date());
-        // 图片
-        ArrayList<String> objects = new ArrayList<>();
-        if (!StringUtils.isEmpty(msgAlarm.getImageUrl())) {
-            String[] split = msgAlarm.getImageUrl().split(";");
-            for (String s : split) {
-                s = imgUrl + s;
-                objects.add(s);
-            }
-            msgAlarmResp.setImageUrls(objects);
-        }
         // 推送消息reqMsgAlarmVo
         webSocketServer.sendMoreMessage(list, objStr(msgAlarmResp));
 

BIN
hazard-admin/src/main/resources/template/baseCameraManagement.xlsx


+ 10 - 5
hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -9,6 +9,7 @@ import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.stateSecrets.SM4Utils;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseDeviceDynamicManagement;
+import com.ozs.service.entity.BaseUser;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.MsgAlarmFrequency;
 import com.ozs.service.entity.SvcAddress;
@@ -55,6 +56,8 @@ public class GeoHazardMonitorTokenController {
     BaseCameraManagementService baseCameraManagementService;
     @Value("${sdk.publish:http://47.106.159.135:18819/hazard/sdk/publish}")
     private String sdkUrl;
+    @Autowired
+    private BaseUserService baseUserService;
 
     /**
      * 获取web访问令牌
@@ -133,6 +136,7 @@ public class GeoHazardMonitorTokenController {
             }
             MsgAlarm alarm = msgAlarmService.getOne(lw);
             log.info("alarm:{}", alarm);
+            BaseUser admin = baseUserService.getUserName("admin");
             if (ObjectUtils.isEmpty(alarm)) {
                 MsgAlarm msgAlarm = new MsgAlarm();
                 BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarm);
@@ -144,8 +148,8 @@ public class GeoHazardMonitorTokenController {
                     buffer.append(";");
                 }
                 msgAlarm.setImageUrl(buffer.toString());
-                msgAlarm.setCreateBy("admin");
-                msgAlarm.setUpdateBy("admin");
+                msgAlarm.setCreateBy(admin.getUserId());
+                msgAlarm.setUpdateBy(admin.getUserId());
                 msgAlarm.setAlarmMile(baseCameraManagement.getInstallMile());
                 msgAlarm.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
                 msgAlarmService.save(msgAlarm);
@@ -163,8 +167,8 @@ public class GeoHazardMonitorTokenController {
                     buffer.append(";");
                 }
                 msgAlarmVice.setImageUrl(buffer.toString());
-                msgAlarmVice.setCreateBy("admin");
-                msgAlarmVice.setUpdateBy("admin");
+                msgAlarmVice.setCreateBy(admin.getUserId());
+                msgAlarmVice.setUpdateBy(admin.getUserId());
                 msgAlarmFrequencyService.save(msgAlarmVice);
                 respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
                 respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
@@ -218,11 +222,12 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("message", "信息编码为空!");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
             }
+            BaseUser admin = baseUserService.getUserName("admin");
             lw.eq(BaseDeviceDynamicManagement::getCameraCode, reqDeviceVo.getCameraCode());
             BaseDeviceDynamicManagement baseDynamicManagement = baseDeviceDynamicManagementService.getOne(lw);
             baseDynamicManagement.setElectricity(reqDeviceVo.getElectricity());
             baseDynamicManagement.setUpdateTime(new Date(reqDeviceVo.getTime()));
-            baseDynamicManagement.setUpdateBy("admin");
+            baseDynamicManagement.setUpdateBy(admin.getUserId());
             log.info("reqDeviceVo:{}", baseDynamicManagement);
             if (baseDeviceDynamicManagementService.updateById(baseDynamicManagement)) {
                 jsonObject.put("resultCode", 1);

+ 3 - 1
hazard-sdk/src/main/java/com/ozs/controller/upload/UploadController.java

@@ -37,6 +37,8 @@ public class UploadController {
     MinioUtils minioUtils;
     @Autowired
     BaseCameraManagementService baseCameraManagementService;
+    @Value("${base.imgUrl:http://124.71.171.71:18801/picbucket}")
+    private String imgUrl;
 
 
     @PostMapping("/putObject")
@@ -77,7 +79,7 @@ public class UploadController {
                 }
                 String imgName = baseCameraManagement.getRailwayCode() + "/" + line + "/" + baseCameraManagement.getInstallMile() + "/" + format1 + "/" + filename;
                 minioUtils.minIoClientUpload(stream.getInputStream(), imgName);
-                uploadFile = "/" + baseCameraManagement.getRailwayCode() + "/" + line + "/" + baseCameraManagement.getInstallMile() + "/" + format1 + "/" + filename;
+                uploadFile = imgUrl+"/" + baseCameraManagement.getRailwayCode() + "/" + line + "/" + baseCameraManagement.getInstallMile() + "/" + format1 + "/" + filename;
             }
         } else {
             jsonObject.put("resultCode", 2);