Browse Source

change
1. 预置位界面调整
2. 预置位功能调试
3. 修复wvp异常情况下推流缓存异常问题
4. 录像查询移除不符合规范项

kindring 1 year ago
parent
commit
9da35e086e

+ 12 - 1
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java

@@ -104,7 +104,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
                             Element itemRecord = recordListIterator.next();
                             Element recordElement = itemRecord.element("DeviceID");
                             if (recordElement == null) {
-                                logger.info("记录为空,下一个...");
+                                logger.info("[国标录像解析] 记录为空,下一个...");
                                 continue;
                             }
                             RecordItem record = new RecordItem();
@@ -115,9 +115,20 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
                             record.setAddress(getText(itemRecord, "Address"));
 
                             String startTimeStr = getText(itemRecord, "StartTime");
+                            // 判断能否正常解析时间
+                            if (!DateUtil.verificationIso8601(startTimeStr)) {
+                                sumNum--;
+                                logger.info("[国标录像解析] 文件开始时间不符合Iso8601标准,移除该项数据");
+                                continue;
+                            }
                             record.setStartTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(startTimeStr));
 
                             String endTimeStr = getText(itemRecord, "EndTime");
+                            if (!DateUtil.verificationIso8601(endTimeStr)) {
+                                sumNum--;
+                                logger.info("[国标录像解析] 结束时间不符合Iso8601标准,移除该项数据");
+                                continue;
+                            }
                             record.setEndTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(endTimeStr));
 
                             record.setSecrecy(itemRecord.element("Secrecy") == null ? 0

+ 8 - 0
src/main/java/com/genersoft/iot/vmp/utils/DateUtil.java

@@ -83,6 +83,14 @@ public class DateUtil {
         }
     }
 
+    public static boolean verificationIso8601(String timeStr) {
+        return verification(timeStr, formatterCompatibleISO8601);
+    }
+
+    public static boolean verification(String timeStr) {
+        return verification(timeStr, formatter);
+    }
+
     public static String getNowForISO8601() {
         LocalDateTime nowDateTime = LocalDateTime.now();
         return formatterISO8601.format(nowDateTime);

+ 44 - 31
web_src/src/components/common/ptzControl.vue

@@ -46,7 +46,7 @@
     <div class="control-panel">
 <!--      预置位 -->
       <el-tabs tab-position="left" style="height: 210px;width:100%">
-        <el-tab-pane label="预置位">
+        <el-tab-pane label="预置位"  >
 <!--          预置位查询 -->
           <el-table
             v-loading="presetLoading"
@@ -97,37 +97,42 @@
             </el-table-column>
           </el-table>
         </el-tab-pane>
-<!--        <el-tab-pane label="巡航">配置管理</el-tab-pane>-->
+        <el-tab-pane label="巡航" >
+          <el-button-group>
+            <el-tag  size="medium">巡航速度</el-tag>
+            <el-input-number  size="mini" v-model="cruisingSpeed"  :precision="0" :min="1" :max="4095"></el-input-number>
+            <el-button size="mini" icon="el-icon-loading" @click="setSpeedOrTime(134, cruisingGroup, cruisingSpeed)">设置</el-button>
+            <br/>
+            <hr/>
+            <el-tag  size="medium">停留时间</el-tag>
+            <el-input-number  size="mini" v-model="cruisingTime" controls-position="right" :precision="0" :min="1" :max="4095"></el-input-number>
+            <el-button  size="mini" icon="el-icon-timer" @click="setSpeedOrTime(135, cruisingGroup, cruisingTime)">设置</el-button>
+            <br/>
+            <hr/>
+            <el-tag  size="medium">巡航组编号</el-tag>
+            <el-input-number  size="mini" v-model="cruisingGroup" controls-position="right" :precision="0" :min="0" :max="255"></el-input-number>
+            <el-button  size="mini" icon="el-icon-add-location" @click="setCommand(132, cruisingGroup, presetPos)">添加点</el-button>
+            <el-button  size="mini" icon="el-icon-delete-location" @click="setCommand(133, cruisingGroup, presetPos)">删除点</el-button>
+            <el-button  size="mini" icon="el-icon-delete" @click="setCommand(133, cruisingGroup, 0)">删除组</el-button>
+            <el-button  size="mini" type="primary" icon="el-icon-video-camera-solid" @click="setCommand(136, cruisingGroup, 0)">巡航</el-button>
+            <br/>
+            <hr/>
+            <el-tag  size="medium">扫描速度</el-tag>
+            <el-input-number size="mini" v-model="scanSpeed" controls-position="right" :precision="0" :min="1" :max="4095"></el-input-number>
+            <el-button size="mini" icon="el-icon-loading" @click="setSpeedOrTime(138, scanGroup, scanSpeed)">设置</el-button>
+            <br/>
+            <hr/>
+            <el-tag size="medium">扫描组编号</el-tag>
+            <el-input-number size="mini" v-model="scanGroup" controls-position="right" :precision="0" :step="1" :min="0" :max="255"></el-input-number>
+            <el-button size="mini" icon="el-icon-d-arrow-left" @click="setCommand(137, scanGroup, 1)">左边界</el-button>
+            <el-button size="mini" icon="el-icon-d-arrow-right" @click="setCommand(137, scanGroup, 2)">右边界</el-button>
+            <el-button size="mini" type="primary" icon="el-icon-video-camera-solid" @click="setCommand(137, scanGroup, 0)">扫描</el-button>
+            <el-button size="mini" type="danger" icon="el-icon-switch-button" @click="ptzCamera('stop')">停止</el-button>
+          </el-button-group>
+        </el-tab-pane>
 <!--        <el-tab-pane label="扫描">角色管理</el-tab-pane>-->
       </el-tabs>
-<!--      <el-button-group>-->
-<!--        <el-tag style="position :absolute; left: 0rem; top: 0rem; width: 5rem; text-align: center" size="medium">预置位编号</el-tag>-->
-<!--        <el-input-number style="position: absolute; left: 5rem; top: 0rem; width: 6rem" size="mini" v-model="presetPos" controls-position="right" :precision="0" :step="1" :min="1" :max="255"></el-input-number>-->
-<!--        <el-button style="position: absolute; left: 11rem; top: 0rem; width: 5rem" size="mini" icon="el-icon-add-location" @click="presetPosition(129, presetPos)">设置</el-button>-->
-<!--        <el-button style="position: absolute; left: 27rem; top: 0rem; width: 5rem" size="mini" type="primary" icon="el-icon-place" @click="presetPosition(130, presetPos)">调用</el-button>-->
-<!--        <el-button style="position: absolute; left: 16rem; top: 0rem; width: 5rem" size="mini" icon="el-icon-delete-location" @click="presetPosition(131, presetPos)">删除</el-button>-->
-<!--        <el-tag style="position :absolute; left: 0rem; top: 2.5rem; width: 5rem; text-align: center" size="medium">巡航速度</el-tag>-->
-<!--        <el-input-number style="position: absolute; left: 5rem; top: 2.5rem; width: 6rem" size="mini" v-model="cruisingSpeed" controls-position="right" :precision="0" :min="1" :max="4095"></el-input-number>-->
-<!--        <el-button style="position: absolute; left: 11rem; top: 2.5rem; width: 5rem" size="mini" icon="el-icon-loading" @click="setSpeedOrTime(134, cruisingGroup, cruisingSpeed)">设置</el-button>-->
-<!--        <el-tag style="position :absolute; left: 16rem; top: 2.5rem; width: 5rem; text-align: center" size="medium">停留时间</el-tag>-->
-<!--        <el-input-number style="position: absolute; left: 21rem; top: 2.5rem; width: 6rem" size="mini" v-model="cruisingTime" controls-position="right" :precision="0" :min="1" :max="4095"></el-input-number>-->
-<!--        <el-button style="position: absolute; left: 27rem; top: 2.5rem; width: 5rem" size="mini" icon="el-icon-timer" @click="setSpeedOrTime(135, cruisingGroup, cruisingTime)">设置</el-button>-->
-<!--        <el-tag style="position :absolute; left: 0rem; top: 4.5rem; width: 5rem; text-align: center" size="medium">巡航组编号</el-tag>-->
-<!--        <el-input-number style="position: absolute; left: 5rem; top: 4.5rem; width: 6rem" size="mini" v-model="cruisingGroup" controls-position="right" :precision="0" :min="0" :max="255"></el-input-number>-->
-<!--        <el-button style="position: absolute; left: 11rem; top: 4.5rem; width: 5rem" size="mini" icon="el-icon-add-location" @click="setCommand(132, cruisingGroup, presetPos)">添加点</el-button>-->
-<!--        <el-button style="position: absolute; left: 16rem; top: 4.5rem; width: 5rem" size="mini" icon="el-icon-delete-location" @click="setCommand(133, cruisingGroup, presetPos)">删除点</el-button>-->
-<!--        <el-button style="position: absolute; left: 21rem; top: 4.5rem; width: 5rem" size="mini" icon="el-icon-delete" @click="setCommand(133, cruisingGroup, 0)">删除组</el-button>-->
-<!--        <el-button style="position: absolute; left: 27rem; top: 5rem; width: 5rem" size="mini" type="primary" icon="el-icon-video-camera-solid" @click="setCommand(136, cruisingGroup, 0)">巡航</el-button>-->
-<!--        <el-tag style="position :absolute; left: 0rem; top: 7rem; width: 5rem; text-align: center" size="medium">扫描速度</el-tag>-->
-<!--        <el-input-number style="position: absolute; left: 5rem; top: 7rem; width: 6rem" size="mini" v-model="scanSpeed" controls-position="right" :precision="0" :min="1" :max="4095"></el-input-number>-->
-<!--        <el-button style="position: absolute; left: 11rem; top: 7rem; width: 5rem" size="mini" icon="el-icon-loading" @click="setSpeedOrTime(138, scanGroup, scanSpeed)">设置</el-button>-->
-<!--        <el-tag style="position :absolute; left: 0rem; top: 9rem; width: 5rem; text-align: center" size="medium">扫描组编号</el-tag>-->
-<!--        <el-input-number style="position: absolute; left: 5rem; top: 9rem; width: 6rem" size="mini" v-model="scanGroup" controls-position="right" :precision="0" :step="1" :min="0" :max="255"></el-input-number>-->
-<!--        <el-button style="position: absolute; left: 11rem; top: 9rem; width: 5rem" size="mini" icon="el-icon-d-arrow-left" @click="setCommand(137, scanGroup, 1)">左边界</el-button>-->
-<!--        <el-button style="position: absolute; left: 16rem; top: 9rem; width: 5rem" size="mini" icon="el-icon-d-arrow-right" @click="setCommand(137, scanGroup, 2)">右边界</el-button>-->
-<!--        <el-button style="position: absolute; left: 27rem; top: 7rem; width: 5rem" size="mini" type="primary" icon="el-icon-video-camera-solid" @click="setCommand(137, scanGroup, 0)">扫描</el-button>-->
-<!--        <el-button style="position: absolute; left: 27rem; top: 9rem; width: 5rem" size="mini" type="danger" icon="el-icon-switch-button" @click="ptzCamera('stop')">停止</el-button>-->
-<!--      </el-button-group>-->
+
     </div>
   </div>
 </template>
@@ -197,6 +202,9 @@ export default {
   beforeMount() {
     // this.queryPushParam();
   },
+  mounted() {
+    this.queryPresetPos();
+  },
   methods:{
     timeSendFocus(){
       queryTimer = setTimeout(async ()=>{
@@ -281,12 +289,17 @@ export default {
         console.error(err)}
     },
     presetPosition: function (cmdCode, presetPos) {
+
       console.log('预置位控制:' + this.presetPos + ' : 0x' + cmdCode.toString(16));
       let that = this;
       this.$axios.axios({
         method: 'post',
         url: '/api/ptz/front_end_command/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0'
-      }).then(function (res) {});
+      }).then(function (res) {
+        if (cmdCode === 129 || cmdCode === 131){
+          this.queryPresetPos();
+        }
+      });
     },
     setSpeedOrTime: function (cmdCode, groupNum, parameter) {
       let that = this;

+ 1 - 1
web_src/src/components/dialog/dialogPtzControl.vue

@@ -8,7 +8,7 @@
       :visible.sync="showPTZDialog"
       @close="close()">
       <div style="width: 100%; height: 100%"></div>
-    <div id="shared" style="text-align: right; margin-top: 1rem;">
+    <div id="shared" style="text-align: left; margin-top: 1rem;">
       <el-tabs v-model="tabActiveName" @tab-click="tabHandleClick" >
         <el-tab-pane label="云台控制" name="control">
           <ptz-control :device-id="deviceId" :channel-id="channelId"></ptz-control>