From a70d0dfe221e06381b6e290d1dab85c9ab4fdc31 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期六, 23 三月 2024 08:36:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java       |    3 
 ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java            |    2 
 ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarPumpMapper.xml                      |   14 ++--
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java    |    4 +
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java                 |   21 ++++---
 ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java               |    2 
 ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java                   |    3 
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java |    7 --
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java    |    4 
 ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml                            |   85 ++++++++++++++++-----------
 10 files changed, 82 insertions(+), 63 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
index f56ed47..39fa506 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -51,6 +51,7 @@
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.utils.tube.GeoPoint;
 import com.ruoyi.utils.tube.TubeTools;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -1086,6 +1087,9 @@
                         String alarmpointName = ardAlarmRadar.getName();//鍏磋叮鐐瑰悕绉�
                         ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
                         if (well == null) {
+                            Map<String, Object> map = new HashMap<>();
+                            map.put("80000", alarmpointName);
+                            WebSocketUtils.sendMessageAll(map);
                             String filePath = ARDConfig.getDownloadPath() +  "noExistWell.txt";
                             writeStringToFile(alarmpointName, filePath);
                             continue;
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
index 268e82b..9eb2008 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -220,7 +220,8 @@
     @ApiOperation("鑾峰彇鏉冮檺鍙婁笅灞炴潈闄愪笅鐨勭浉鏈�")
     public AjaxResult getCamerasByDeptId() {
         Long deptId = SecurityUtils.getDeptId();
-        List<Map<String,Object>> camerasList = ardCamerasService.getCamerasByDeptId(deptId);
+        String userId = SecurityUtils.getUserId();
+        List<Map<String,Object>> camerasList = ardCamerasService.getCamerasByDeptId(deptId,userId);
         return AjaxResult.success(camerasList);
     }
 
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java b/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
index 9e39104..df9334a 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
@@ -90,7 +90,7 @@
      */
     public ArdCameras checkCameraIpAndPortUnique(@Param("ip") String ip, @Param("port")Integer port);
 
-    public List<Map<String, Object>> getCamerasByDeptId(Long deptId);
+    public List<Map<String, Object>> getCamerasByDeptId(@Param("deptId")Long deptId,@Param("userId")String userId);
 
     public Boolean getCameraOperationByCameraId(@Param("id") String id, @Param("userId") String userId);
 
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
index 05ae7a1..860d96d 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
@@ -132,7 +132,7 @@
      */
     public String checkCameraIpAndPortUnique(ArdCameras camera);
 
-    public List<Map<String,Object>> getCamerasByDeptId(Long deptId);
+    public List<Map<String,Object>> getCamerasByDeptId(Long deptId,String userId);
 
     public Boolean getCameraOperationByCameraId(String id,String userId);
 
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 00d2aff..7f7c334 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -564,8 +564,8 @@
     }
 
     @Override
-    public List<Map<String, Object>> getCamerasByDeptId(Long deptId) {
-        List<Map<String, Object>> result = ardCamerasMapper.getCamerasByDeptId(deptId);
+    public List<Map<String, Object>> getCamerasByDeptId(Long deptId,String userId) {
+        List<Map<String, Object>> result = ardCamerasMapper.getCamerasByDeptId(deptId,userId);
         return result;
     }
 
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index 9312614..097c4fa 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -116,7 +116,7 @@
     public int updateArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask) {
         ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername());
         ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate());
-        //  ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
+        ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
         insertArdVideoInspectTaskStep(ardVideoInspectTask);
         return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
     }
@@ -184,14 +184,9 @@
         }
         if (StringUtils.isNotNull(ardVideoInspectTaskStepList)) {
             for (ArdVideoInspectTaskStep ardVideoInspectTaskStep : ardVideoInspectTaskStepList) {
-                if (ardVideoInspectTaskStep.getId() == null) {
                     //鏂扮殑姝ラ,娣诲姞
                     ardVideoInspectTaskStep.setId(IdUtils.simpleUUID());
                     ardVideoInspectTaskStepMapper.insertArdVideoInspectTaskStep(ardVideoInspectTaskStep);
-                } else {
-                    //宸叉湁姝ラ,鏇存柊
-                    ardVideoInspectTaskStepMapper.updateArdVideoInspectTaskStep(ardVideoInspectTaskStep);
-                }
             }
         }
     }
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
index 694b3a5..eee6a8b 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
@@ -41,11 +41,11 @@
 
     @Value("${mediamtx.host}")
     String mediamtxHost;
+
     @Override
     public void run(ApplicationArguments args) throws Exception {
         mediaNameList = getNameList();
-        if(mediaNameList.size()>0)
-        {
+        if (mediaNameList.size() > 0) {
             removePath(mediaNameList.toArray(new String[0]));
             mediaNameList.clear();
         }
@@ -76,7 +76,7 @@
                 //榛樿杞В鐮�
                 String cmd = "ffmpeg -rtsp_transport tcp -i " + sourceUrl + " -vcodec libx264 -preset:v ultrafast -r 25 -keyint_min 25 -g 60 -sc_threshold 0 -threads 6  -b:v 2048k -acodec opus  -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
                 if (mode.equals("0")) {//纭В鐮�
-                    cmd = rootPath+"ffmpeg -hwaccel cuvid -c:v hevc_cuvid  -rtsp_transport tcp  -i " + sourceUrl + " -c:v h264_nvenc  -r 25 -g 60 -sc_threshold 0 -threads 6  -b:v 2048k -bf 0 -acodec opus  -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
+                    cmd = rootPath + "ffmpeg -hwaccel cuvid -c:v hevc_cuvid  -rtsp_transport tcp  -i " + sourceUrl + " -c:v h264_nvenc  -r 25 -g 60 -sc_threshold 0 -threads 6  -b:v 2048k -bf 0 -acodec opus  -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
                 }
                 conf.setRunOnDemand(cmd);
                 conf.setRunOnDemandRestart(true);
@@ -89,8 +89,8 @@
             conf.setSourceProtocol("tcp");
 
             if (!checkNameExist(name)) {
-                 mediaClient.addPath(name, conf);
-                 mediaNameList.add(name);
+                mediaClient.addPath(name, conf);
+                mediaNameList.add(name);
             }
 
             map.put("rtspUrl", rtspUrl);
@@ -172,11 +172,14 @@
 
     @Override
     public void removePath(String[] names) {
-        for (String name : names) {
-            if (checkNameExist(name)) {
-                mediaClient.removePath(name);
-                log.info("鍒犻櫎鎴愬姛");
+        try {
+            for (String name : names) {
+                if (checkNameExist(name)) {
+                    mediaClient.removePath(name);
+                }
             }
+        } catch (Exception ex) {
+            log.error("鎵归噺绉婚櫎娴佸獟浣撳紓甯革細" + ex.getMessage());
         }
     }
 
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java
index 4de2ff2..7cad149 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java
@@ -14,7 +14,8 @@
     NET_DVR_NOINIT(3, "SDK鏈垵濮嬪寲"),
     NET_DVR_NETWORK_FAIL_CONNECT(7, "杩炴帴璁惧澶辫触銆傝澶囦笉鍦ㄧ嚎鎴栫綉缁滃師鍥犲紩璧风殑杩炴帴瓒呮椂绛�"),
     NET_DVR_NETWORK_RECV_TIMEOUT(10, "浠庤澶囨帴鏀舵暟鎹秴鏃�"),
-    NET_DVR_NETWORK_ERRORDATA(11, "浼犻�佺殑鏁版嵁鏈夎銆傚彂閫佺粰璁惧鎴栬�呬粠璁惧鎺ユ敹鍒扮殑鏁版嵁閿欒锛屽杩滅▼鍙傛暟閰嶇疆鏃惰緭鍏ヨ澶囦笉鏀寔鐨勫�笺��");
+    NET_DVR_NETWORK_ERRORDATA(11, "浼犻�佺殑鏁版嵁鏈夎銆傚彂閫佺粰璁惧鎴栬�呬粠璁惧鎺ユ敹鍒扮殑鏁版嵁閿欒锛屽杩滅▼鍙傛暟閰嶇疆鏃惰緭鍏ヨ澶囦笉鏀寔鐨勫��"),
+    NET_DVR_DVROPRATEFAILED(29, "璁惧鎿嶄綔澶辫触");
     /**
      * 鏋氫妇鐮�
      */
diff --git a/ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarPumpMapper.xml b/ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarPumpMapper.xml
index 10c5e89..4390856 100644
--- a/ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarPumpMapper.xml
+++ b/ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarPumpMapper.xml
@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.alarm.radar.mapper.ArdAlarmRadarPumpMapper">
-    
+
     <resultMap type="ArdAlarmRadarPump" id="ArdAlarmRadarPumpResult">
         <result property="id"    column="id"    />
         <result property="name"    column="name"    />
@@ -22,12 +22,12 @@
     </resultMap>
 
     <sql id="selectArdAlarmRadarPumpVo">
-        select id, name, target_id, alarm_type, alarm_time, longitude, latitude, record_url1, view_time, create_by, create_time, user_id, dept_id, guide_time from ard_alarm_radar_pump
+        select id, name, target_id, alarm_type, alarm_time, longitude, latitude, record_url, view_time, create_by, create_time, user_id, dept_id, guide_time from ard_alarm_radar_pump
     </sql>
 
     <select id="selectArdAlarmRadarPumpList" parameterType="ArdAlarmRadarPump" resultMap="ArdAlarmRadarPumpResult">
         <include refid="selectArdAlarmRadarPumpVo"/>
-        <where>  
+        <where>
             <if test="name != null  and name != ''"> and name like '%'||#{name}||'%'</if>
             <if test="targetId != null  and targetId != ''"> and target_id = #{targetId}</if>
             <if test="alarmType != null  and alarmType != ''"> and alarm_type = #{alarmType}</if>
@@ -48,12 +48,12 @@
         </where>
         order by alarm_time desc
     </select>
-    
+
     <select id="selectArdAlarmRadarPumpById" parameterType="String" resultMap="ArdAlarmRadarPumpResult">
         <include refid="selectArdAlarmRadarPumpVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertArdAlarmRadarPump" parameterType="ArdAlarmRadarPump">
         insert into ard_alarm_radar_pump
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -118,7 +118,7 @@
     </delete>
 
     <delete id="deleteArdAlarmRadarPumpByIds" parameterType="String">
-        delete from ard_alarm_radar_pump where id in 
+        delete from ard_alarm_radar_pump where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -172,4 +172,4 @@
         from ard_alarm_radar_pump
         where alarm_time &gt;= #{start} and  alarm_time &lt;= #{end}  group by date order by date
     </select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
index b084616..0a4d585 100644
--- a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
+++ b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -288,41 +288,56 @@
         where ip = #{ip}
           and port = #{port} limit 1
     </select>
-    <select id="getCamerasByDeptId" resultType="java.util.Map" parameterType="java.lang.Long">
-        with recursive rsd as (
-            select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
-                   ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
-                   case sdd0.dict_label
-                       when '娴峰悍' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
-                       when '澶у崕' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&amp;subtype=1')
-                       end as rtsp
-            from sys_dept sd
-                     inner join ard_cameras ac on sd.dept_id = ac.dept_id
-                     inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
-                     inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
-                     inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
-                     inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
-            where sd.dept_id = #{deptId}
-              and sdt.dict_type = 'camera_type' and (sdd.dict_label = '灏忓厜鐢�' or sdd.dict_label = '澶у厜鐢�')
-              and sdt0.dict_type = 'factory'
-            union
-            select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
-                   ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
-                   case sdd0.dict_label
-                       when '娴峰悍' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
-                       when '澶у崕' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&amp;subtype=1')
-                       end as rtsp
-            from sys_dept csd
-                     inner join rsd on rsd."deptId" = csd.parent_id
-                     inner join ard_cameras ac on csd.dept_id = ac.dept_id
-                     inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
-                     inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
-                     inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
-                     inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
-                and sdt.dict_type = 'camera_type' and (sdd.dict_label = '灏忓厜鐢�' or sdd.dict_label = '澶у厜鐢�')
-                and sdt0.dict_type = 'factory'
-        )
-        select distinct * from rsd order by "dictLabel"
+    <select id="getCamerasByDeptId" resultType="java.util.Map" >
+        select distinct * from (
+           with recursive rsd as (
+               select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
+                      ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
+                      case sdd0.dict_label
+                          when '娴峰悍' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
+                          when '澶у崕' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&amp;subtype=1')
+                          end as rtsp
+               from sys_dept sd
+                        inner join ard_cameras ac on sd.dept_id = ac.dept_id
+                        inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
+                        inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
+                        inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
+                        inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
+               where sd.dept_id = #{deptId}
+                 and sdt.dict_type = 'camera_type' and (sdd.dict_label = '灏忓厜鐢�' or sdd.dict_label = '澶у厜鐢�')
+                 and sdt0.dict_type = 'factory'
+               union
+               select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
+                      ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
+                      case sdd0.dict_label
+                          when '娴峰悍' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
+                          when '澶у崕' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&amp;subtype=1')
+                          end as rtsp
+               from sys_dept csd
+                        inner join rsd on rsd."deptId" = csd.parent_id
+                        inner join ard_cameras ac on csd.dept_id = ac.dept_id
+                        inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
+                        inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
+                        inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
+                        inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
+                   and sdt.dict_type = 'camera_type' and (sdd.dict_label = '灏忓厜鐢�' or sdd.dict_label = '澶у厜鐢�')
+                   and sdt0.dict_type = 'factory')
+           select * from rsd
+           union
+           select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
+                  ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
+                  case sdd0.dict_label
+                      when '娴峰悍' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
+                      when '澶у崕' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&amp;subtype=1')
+                      end as rtsp from sys_user_role sur
+                                           inner join sys_role_dept srd on sur.role_id = srd.role_id
+                                           inner join ard_cameras ac on srd.dept_id = ac.dept_id
+                                           inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
+                                           inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
+                                           inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
+                                           inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
+           where sur.user_id = #{userId} and sdt.dict_type = 'camera_type' and (sdd.dict_label = '灏忓厜鐢�' or sdd.dict_label = '澶у厜鐢�') and sdt0.dict_type = 'factory'
+       )t order by "dictLabel"
     </select>
     <select id="getCameraOperationByCameraId" resultType="java.lang.Boolean" parameterType="java.lang.String">
         select

--
Gitblit v1.9.3