From 8c73b83777413ce7ed74fb371380be3d353167ff Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 十二月 2025 10:59:44 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java            |    8 ++
 admin/src/views/business/warningRule.vue                                                                            |    7 ++
 server/doc/新增告警规则关联监控点(2025-12-10).sql                                                                              |    3 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java                    |    9 +++
 admin/src/components/business/OperaWarningRuleWindow.vue                                                            |   78 +++++++++++++++++++++-----
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java |    6 --
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java                         |   31 ++++++++-
 admin/.env.development                                                                                              |    4 
 8 files changed, 116 insertions(+), 30 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index 6c43c0c..ac59705 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -3,9 +3,9 @@
 
 # VUE_APP_API_URL  = 'https://atwl.ahzyssl.com/zhyq_interface'
 
-# VUE_APP_API_URL  = 'http://192.168.1.45:10010'
+VUE_APP_API_URL  = 'http://192.168.1.45:10010'
 
-#VUE_APP_API_URL  = 'http://192.168.0.7/system_gateway'
+# #VUE_APP_API_URL  = 'http://192.168.0.7/system_gateway'
 
 VUE_APP_API_URL  = 'http://localhost:10010'
 
diff --git a/admin/src/components/business/OperaWarningRuleWindow.vue b/admin/src/components/business/OperaWarningRuleWindow.vue
index 0afd40a..179993b 100644
--- a/admin/src/components/business/OperaWarningRuleWindow.vue
+++ b/admin/src/components/business/OperaWarningRuleWindow.vue
@@ -19,7 +19,7 @@
           </el-select>
         </el-form-item>
         <el-form-item label=""  style="display: inline-block;margin-left: 10px">
-<!--          <el-select v-model="item.regionId" filterable multiple clearable  placeholder="璇烽�夋嫨鍙戠敓鍖哄煙" >
+<!--      <el-select v-model="item.regionId" filterable multiple clearable  placeholder="璇烽�夋嫨鍙戠敓鍖哄煙" >
             <el-option v-for="item in regionList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>-->
@@ -34,6 +34,11 @@
               noChildrenText="娌℃湁瀛愰�夐」"
               noOptionsText="娌℃湁鍙�夐」"
               noResultsText="娌℃湁鍖归厤鐨勭粨鏋�" />
+        </el-form-item>
+        <el-form-item label=""   style="display: inline-block;margin-left: 10px; " >
+          <el-select v-model="item.deviceId" filterable placeholder="璇烽�夋嫨鐩戞帶鐐�"   @change="changeCamera(item)" >
+            <el-option v-for="item1 in item.carmeraList"   :label="item1.name" :value="item1.indexCode" ></el-option>
+          </el-select>
         </el-form-item>
         <el-button type="danger" style="margin-left: 10px;height: 32px; " @click="delDo(index)" v-if="index>0 || form.detailList.length>1">鍒犻櫎</el-button>
       </div>
@@ -111,7 +116,7 @@
         intervalSec: '',
         sortnum: '',
         status: 0,
-        detailList: [{ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null }]
+        detailList: [{ random: Math.random(), regionId: null, regionName: null, deviceId: null, deviceName: null, regionCode: null, warningId: null }]
       },
       deviceSelect: [],
       memberSelect: [],
@@ -135,6 +140,7 @@
       api: '/business/warningRule',
       'field.id': 'id'
     })
+    this.loadRegions()
   },
   methods: {
     normalizeOptions (node) {
@@ -148,18 +154,50 @@
         children: node.childList
       }
     },
+    changeCamera (curitem) {
+      var list = curitem.carmeraList
+      if (list && list.length) {
+        list.forEach(item => {
+          if (curitem.deviceId === item.indexCode) {
+            curitem.deviceName = item.name
+          }
+        })
+      }
+    },
     changeSel (opt) {
-      var item = this.form.detailList[opt]
-      this.form.detailList[opt].regionCode = null
-      this.form.detailList[opt].regionName = null
-      if (item.regionId) {
-        var reg = this.getSelectedObject(item.regionId)
-        if (reg) {
-          this.form.detailList[opt].regionCode = reg.indexCode
-          this.form.detailList[opt].regionName = reg.name
+      this.$nextTick(() => {
+        console.log('=================changeSel',opt,this.form.detailList)
+        var item = this.form.detailList[opt]
+        this.form.detailList[opt].regionCode = null
+        this.form.detailList[opt].regionName = null
+        this.form.detailList[opt].carmeraList = []
+        // this.form.detailList[opt].deviceId = null
+        // this.form.detailList[opt].deviceName = null
+        if (item.regionId) {
+          var reg = this.getSelectedObject(item.regionId)
+          if (reg) {
+            this.form.detailList[opt].regionCode = reg.indexCode
+            this.form.detailList[opt].regionName = reg.name
+            this.form.detailList[opt].carmeraList = reg.carmeraList
+          }
+        }
+        console.log('=================changeSel1' , this.form.detailList[opt].carmeraList,this.form.detailList[opt].deviceId)
+        if(this.notInCarmeraList( this.form.detailList[opt].carmeraList,this.form.detailList[opt].deviceId) ){
+          this.form.detailList[opt].deviceId = null
+          this.form.detailList[opt].deviceName = null
+        }
+      })
+    },
+    notInCarmeraList (list, id) {
+      var r = true
+      if (list && list.length) {
+        for (const item of list) {
+          if (item.indexCode === id) {
+            r = false
+          }
         }
       }
-      console.log(' this.form.detailList[opt]', reg, this.form.detailList[opt])
+      return r
     },
     getSelectedObject (id) {
       if (!id) {
@@ -179,7 +217,7 @@
       return findSelected(this.regionList) // 寮�濮嬫悳绱㈠苟杩斿洖缁撴灉
     },
     addDo () {
-      this.form.detailList.push({ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null })
+      this.form.detailList.push({ random: Math.random(), deviceId: null, deviceName: null, regionId: null, regionName: null, regionCode: null, warningId: null })
     },
     delDo (index) {
       if (this.form.detailList.length > 1 && this.form.detailList.length > index) {
@@ -221,7 +259,7 @@
         deviceNoticeContent: '',
         memberNotice: 1,
         status: 0,
-        detailList: [{ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null }]
+        detailList: [{ random: Math.random(), deviceId: null, deviceName: null, regionId: null, regionName: null, regionCode: null, warningId: null }]
       }
       // 鏂板缓
       if (target == null) {
@@ -229,19 +267,29 @@
           this.$refs.form.resetFields()
           this.form[this.configData['field.id']] = null
         })
-
         return
       }
       // 缂栬緫
       this.$nextTick(() => {
+        this.form.detailList =target.detailList
         for (const key in this.form) {
           this.form[key] = target[key]
           this.form.memberNotice = this.form.memberNotice || 0
           this.form.deviceNotice = this.form.deviceNotice || 0
           this.form.status = this.form.status || 0
         }
+        console.log('===========================', this.form.detailList, target.detailList)
         if (!this.form.detailList || !this.form.detailList.length) {
-          this.form.detailList = [{ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null }]
+          this.form.detailList = [{ random: Math.random(), deviceId: null, deviceName: null, regionId: null, regionName: null, regionCode: null, warningId: null }]
+        } else {
+          this.form.detailList.forEach((item, index) => {
+            if (item.regionId != null) {
+              var region = this.getSelectedObject(item.regionId)
+              if (region) {
+                item.carmeraList = region.carmeraList || []
+              }
+            }
+          })
         }
         if (this.form.memberIds) {
           this.memberSelect = this.form.memberIds.split(',')
diff --git a/admin/src/views/business/warningRule.vue b/admin/src/views/business/warningRule.vue
index db5eb91..7773aaf 100644
--- a/admin/src/views/business/warningRule.vue
+++ b/admin/src/views/business/warningRule.vue
@@ -37,6 +37,13 @@
       >
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column prop="title" label="鎶ヨ瑙勫垯" min-width="200px" show-tooltip-when-overflow></el-table-column>
+        <el-table-column prop="detailList" label="瑙勫垯鏄庣粏" min-width="360px" show-tooltip-when-overflow>
+          <template slot-scope="{row}">
+            <div  v-if="row.detailList && row.detailList.length">
+                <div style="display: block;" v-for="item in row.detailList"> {{item.warningName||''}} {{item.regionName||''}} {{item.deviceName||''}};</div>
+             </div>
+          </template>
+        </el-table-column>
         <el-table-column prop="memberNames" label="鎶ヨ鎺ユ敹浜�" min-width="200px" show-tooltip-when-overflow>
           <template slot-scope="{row}">
            <span v-if="row.memberNotice === 1">{{row.memberNames}}</span>
diff --git "a/server/doc/\346\226\260\345\242\236\345\221\212\350\255\246\350\247\204\345\210\231\345\205\263\350\201\224\347\233\221\346\216\247\347\202\271\357\274\2102025-12-10\357\274\211.sql" "b/server/doc/\346\226\260\345\242\236\345\221\212\350\255\246\350\247\204\345\210\231\345\205\263\350\201\224\347\233\221\346\216\247\347\202\271\357\274\2102025-12-10\357\274\211.sql"
new file mode 100644
index 0000000..2a302bd
--- /dev/null
+++ "b/server/doc/\346\226\260\345\242\236\345\221\212\350\255\246\350\247\204\345\210\231\345\205\263\350\201\224\347\233\221\346\216\247\347\202\271\357\274\2102025-12-10\357\274\211.sql"
@@ -0,0 +1,3 @@
+ALTER TABLE `wuhuyancao`.`warning_rule_detail` 
+ADD COLUMN `DEVICE_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩戞帶鐐瑰悕绉�' AFTER `REGION_ID`,
+ADD COLUMN `DEVICE_ID` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩戞帶鐐逛富閿�' AFTER `DEVICE_NAME`;
\ No newline at end of file
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
index 024312b..50f1434 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -320,28 +320,49 @@
     @PostMapping("/regionList")
     public ApiResponse<List<PageRegionInfoResponse> > getRegionList(HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token ){
         CarmeraListVO param  =new CarmeraListVO();
-        param.setWithCameras(0);
+        param.setWithCameras(1);
         List<PageRegionInfoResponse>  result = new ArrayList<>();
         try {
             result = boardService.getRegionTree( param);
+
+        }catch (Exception e){
+
+        }
+        if(result.size()==0){
             //------TODO---------娴嬭瘯妯℃嫙鏁版嵁----start-----
-           /* for (int i = 0; i < 5; i++) {
+            for (int i = 0; i < 5; i++) {
                 PageRegionInfoResponse t = new PageRegionInfoResponse();
                 t.setName("鎬诲尯鍩焈"+i);
                 t.setIndexCode(i+"_code");
                 t.setChildList(new ArrayList<>());
+                t.setCarmeraList(new ArrayList<>());
+                CarmeraListVO c= new CarmeraListVO();
+                c.setName("鐩戞帶鐐�11"+i);
+                c.setIndexCode("jkd11"+i);
+                t.getCarmeraList().add(c);
+                c= new CarmeraListVO();
+                c.setName("鐩戞帶鐐�12"+i);
+                c.setIndexCode("jkd12"+i);
+                t.getCarmeraList().add(c);
                 for (int j = 0; j < 5; j++) {
                     PageRegionInfoResponse t1 = new PageRegionInfoResponse();
                     t1.setName("瀛愬尯鍩焈"+i+"_"+j);
                     t1.setIndexCode(i+"_"+j+"_ChildCode");
                     t1.setParentIndexCode(t.getIndexCode());
+                    t1.setCarmeraList(new ArrayList<>());
+                    CarmeraListVO c1= new CarmeraListVO();
+                    c1.setName(i+"鐩戞帶鐐�111"+j);
+                    c1.setIndexCode(i+"jkd111"+j);
+                    t1.getCarmeraList().add(c1);
+                    c1= new CarmeraListVO();
+                    c1.setName(i+"鐩戞帶鐐�112"+j);
+                    c1.setIndexCode(i+"jkd112"+j);
+                    t1.getCarmeraList().add(c1);
                     t.getChildList().add(t1);
                 }
                 result.add(t);
-            }*/
+            }
             //------TODO---------娴嬭瘯妯℃嫙鏁版嵁----end-----
-        }catch (Exception e){
-
         }
         return ApiResponse.success(result);
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java
index af9fe47..0937cce 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java
@@ -1,7 +1,6 @@
 package com.doumee.core.haikang.model.param.respose;
 
 import com.doumee.dao.web.response.platformReport.CarmeraListVO;
-import com.doumee.dao.web.response.platformReport.RegionTreeVO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -12,17 +11,12 @@
 
      @ApiModelProperty(value = "鍖哄煙鍞竴鏍囪瘑鐮�")
      private String indexCode;//	 Body 	 String 	 false 	 鍖哄煙鍞竴鏍囪瘑鐮�
-
      @ApiModelProperty(value = "鍖哄煙鍚嶇О")
      private String name 	;// Body 	 String 	 false 	 鍖哄煙鍚嶇О
-
      @ApiModelProperty(value = "鐖跺尯鍩熷敮涓�鏍囪瘑鐮�")
      private String parentIndexCode ;//	 Body 	 String 	 false 	 鐖跺尯鍩熷敮涓�鏍囪瘑鐮�
-
      @ApiModelProperty(value = "鏍戠紪鍙�")
      private String treeCode ;//	 Body 	 String 	 false 	 鏍戠紪鍙�
-
-
      @ApiModelProperty(value = "涓嬬骇闆嗗悎")
      private List<PageRegionInfoResponse> childList;
      @ApiModelProperty(value = "鐩戞帶鐐归泦鍚�")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java
index 9651da0..612982b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java
@@ -77,11 +77,20 @@
     @ExcelColumn(name="鍖哄煙涓婚敭")
     private String regionId;
 
+    @ApiModelProperty(value = "鐩戞帶鐐瑰悕绉�")
+    @ExcelColumn(name="鐩戞帶鐐瑰悕绉�")
+    private String deviceName;
 
+    @ApiModelProperty(value = "鐩戞帶鐐逛富閿�")
+    @ExcelColumn(name="鐩戞帶鐐逛富閿�")
+    private String deviceId;
 
     @ApiModelProperty(value = "鍛婅绫诲瀷缂栫爜")
     @TableField(exist = false)
     private String code;
+    @ApiModelProperty(value = "鍛婅鍚嶇О")
+    @TableField(exist = false)
+    private String warningName;
 
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java
index abb9cf3..e5afe33 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java
@@ -344,8 +344,12 @@
         queryWrapper.orderByDesc(WarningRule::getCreateDate);
         IPage<WarningRule> result = warningRuleMapper.selectJoinPage(page, WarningRule.class,queryWrapper);
         if(result.getRecords()!=null && result.getRecords().size()>0){
-            List<WarningRuleDetail> allList = warningRuleDetailMapper.selectList(new LambdaQueryWrapper<WarningRuleDetail>()
-                    .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO));
+            List<WarningRuleDetail> allList = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,
+                    new MPJLambdaWrapper<WarningRuleDetail>()
+                            .selectAll(WarningRuleDetail.class)
+                            .selectAs(Warning::getName,WarningRuleDetail::getWarningName)
+                            .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
+                            .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO));
             for(WarningRule model :result.getRecords()){
                 model.setDetailList(getDetailListFromAll(allList,model.getId()));
             }

--
Gitblit v1.9.3