临时提交

pull/1642/head
panlinlin 2024-07-11 23:52:34 +08:00
parent 6619c5c53d
commit 0853d7e842
5 changed files with 151 additions and 75 deletions

View File

@ -117,7 +117,7 @@ public class CatalogDataCatch {
// 超过五秒收不到消息任务超时, 只更新这一部分数据, 收到数据与声明的总数一致,则重置通道数据,数据不全则只对收到的数据做更新操作 // 超过五秒收不到消息任务超时, 只更新这一部分数据, 收到数据与声明的总数一致,则重置通道数据,数据不全则只对收到的数据做更新操作
if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.runIng)) { if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.runIng)) {
if (catalogData.getTotal() == catalogData.getChannelList().size()) { if (catalogData.getTotal() == catalogData.getChannelList().size()) {
deviceChannelService.resetChannels(catalogData.getDevice().getDeviceId(), catalogData.getChannelList()); deviceChannelService.resetChannels(catalogData.getDevice().getId(), catalogData.getChannelList());
}else { }else {
deviceChannelService.updateChannels(catalogData.getDevice(), catalogData.getChannelList()); deviceChannelService.updateChannels(catalogData.getDevice(), catalogData.getChannelList());
} }

View File

@ -130,7 +130,7 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
if (catalogDataCatch.get(take.getDevice().getDeviceId()).size() == sumNum) { if (catalogDataCatch.get(take.getDevice().getDeviceId()).size() == sumNum) {
// 数据已经完整接收, 此时可能存在某个设备离线变上线的情况,但是考虑到性能,此处不做处理, // 数据已经完整接收, 此时可能存在某个设备离线变上线的情况,但是考虑到性能,此处不做处理,
// 目前支持设备通道上线通知时和设备上线时向上级通知 // 目前支持设备通道上线通知时和设备上线时向上级通知
boolean resetChannelsResult = deviceChannelService.resetChannels(take.getDevice().getDeviceId(), catalogDataCatch.get(take.getDevice().getDeviceId())); boolean resetChannelsResult = deviceChannelService.resetChannels(device.getId(), catalogDataCatch.get(take.getDevice().getDeviceId()));
if (!resetChannelsResult) { if (!resetChannelsResult) {
String errorMsg = "接收成功,写入失败,共" + sumNum + "条,已接收" + catalogDataCatch.get(take.getDevice().getDeviceId()).size() + "条"; String errorMsg = "接收成功,写入失败,共" + sumNum + "条,已接收" + catalogDataCatch.get(take.getDevice().getDeviceId()).size() + "条";
catalogDataCatch.setChannelSyncEnd(take.getDevice().getDeviceId(), errorMsg); catalogDataCatch.setChannelSyncEnd(take.getDevice().getDeviceId(), errorMsg);

View File

@ -105,7 +105,7 @@ public interface IDeviceChannelService {
void cleanChannelsForDevice(int deviceId); void cleanChannelsForDevice(int deviceId);
boolean resetChannels(String deviceId, List<DeviceChannel> deviceChannels); boolean resetChannels(int deviceDbId, List<DeviceChannel> deviceChannels);
PageInfo<DeviceChannel> getSubChannels(int deviceDbId, String channelId, String query, Boolean channelType, Boolean online, int page, int count); PageInfo<DeviceChannel> getSubChannels(int deviceDbId, String channelId, String query, Boolean channelType, Boolean online, int page, int count);

View File

@ -422,15 +422,11 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
@Override @Override
@Transactional @Transactional
public boolean resetChannels(String deviceId, List<DeviceChannel> deviceChannelList) { public boolean resetChannels(int deviceDbId, List<DeviceChannel> deviceChannelList) {
if (CollectionUtils.isEmpty(deviceChannelList)) { if (CollectionUtils.isEmpty(deviceChannelList)) {
return false; return false;
} }
Device device = deviceMapper.getDeviceByDeviceId(deviceId); List<DeviceChannel> allChannels = channelMapper.queryAllChannels(deviceDbId);
if (device == null) {
throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到设备: " +deviceId);
}
List<DeviceChannel> allChannels = channelMapper.queryAllChannels(device.getId());
Map<String,DeviceChannel> allChannelMap = new ConcurrentHashMap<>(); Map<String,DeviceChannel> allChannelMap = new ConcurrentHashMap<>();
if (!allChannels.isEmpty()) { if (!allChannels.isEmpty()) {
for (DeviceChannel deviceChannel : allChannels) { for (DeviceChannel deviceChannel : allChannels) {
@ -507,7 +503,7 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
} }
int limitCount = 50; int limitCount = 50;
boolean result = false; boolean result = false;
if (!result && !addChannels.isEmpty()) { if (!addChannels.isEmpty()) {
if (addChannels.size() > limitCount) { if (addChannels.size() > limitCount) {
for (int i = 0; i < addChannels.size(); i += limitCount) { for (int i = 0; i < addChannels.size(); i += limitCount) {
int toIndex = i + limitCount; int toIndex = i + limitCount;

View File

@ -2,49 +2,40 @@
<div id="ChannelEdit" v-loading="locading" style="width: 100%"> <div id="ChannelEdit" v-loading="locading" style="width: 100%">
<el-form ref="passwordForm" status-icon label-width="160px" style="padding-top: 1rem"> <el-form ref="passwordForm" status-icon label-width="160px" style="padding-top: 1rem">
<el-form-item label="名称" > <el-form-item label="名称" >
<el-input v-if="form.name" v-model="form.gbName" :placeholder="form.name"></el-input> <el-input v-model="form.gbName" placeholder="请输入通道名称"></el-input>
<el-input v-if="!form.name" v-model="form.gbName" placeholder="请输入通道名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="编码" > <el-form-item label="编码" >
<el-input v-if="form.deviceId" v-model="form.gbDeviceId" :placeholder="form.deviceId"></el-input> <el-input v-model="form.gbDeviceId" placeholder="请输入通道编码"></el-input>
<el-input v-if="!form.deviceId" v-model="form.gbDeviceId" placeholder="请输入通道编码"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备厂商" > <el-form-item label="设备厂商" >
<el-input v-if="form.manufacturer" v-model="form.gbManufacturer" :placeholder="form.manufacturer"></el-input> <el-input v-model="form.gbManufacturer" placeholder="请输入设备厂商"></el-input>
<el-input v-if="!form.manufacturer" v-model="form.gbManufacturer" placeholder="请输入设备厂商"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备型号" > <el-form-item label="设备型号" >
<el-input v-if="form.model" v-model="form.gbModel" :placeholder="form.model"></el-input> <el-input v-model="form.gbModel" placeholder="请输入设备型号"></el-input>
<el-input v-if="!form.model" v-model="form.gbModel" placeholder="请输入设备型号"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备归属" > <el-form-item label="设备归属" >
<el-input v-if="form.owner" v-model="form.gbOwner" :placeholder="form.owner"></el-input> <el-input v-model="form.gbOwner" placeholder="请输入设备归属"></el-input>
<el-input v-if="!form.owner" v-model="form.gbOwner" placeholder="请输入设备归属"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="行政区域" > <el-form-item label="行政区域" >
<el-input v-if="form.civilCode" v-model="form.gbCivilCode" :placeholder="form.civilCode"></el-input> <el-input v-model="form.gbCivilCode" placeholder="请输入行政区域"></el-input>
<el-input v-if="!form.civilCode" v-model="form.gbCivilCode" placeholder="请输入行政区域"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="警区" > <el-form-item label="警区" >
<el-input v-if="form.block" v-model="form.gbBlock" :placeholder="form.block"></el-input> <el-input v-model="form.gbBlock" placeholder="请输入警区"></el-input>
<el-input v-if="!form.block" v-model="form.gbBlock" placeholder="请输入警区"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="安装地址" > <el-form-item label="安装地址" >
<el-input v-if="form.address" v-model="form.gbAddress" :placeholder="form.address"></el-input> <el-input v-model="form.gbAddress" placeholder="请输入安装地址"></el-input>
<el-input v-if="!form.address" v-model="form.gbAddress" placeholder="请输入安装地址"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="子设备" > <el-form-item label="子设备" >
<el-select v-model="form.gbParental" style="width: 100%" placeholder="请选择"> <el-select v-model="form.gbParental" style="width: 100%" placeholder="请选择是否有子设备">
<el-option label="有" :value="1"></el-option> <el-option label="有" :value="1"></el-option>
<el-option label="无" :value="0"></el-option> <el-option label="无" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="父节点编码" > <el-form-item label="父节点编码" >
<el-input v-if="form.parentId" v-model="form.gbParentId" :placeholder="form.parentId"></el-input> <el-input v-model="form.gbParentId" placeholder="请输入父节点编码"></el-input>
<el-input v-if="!form.parentId" v-model="form.gbParentId" placeholder="请输入父节点编码"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="信令安全模式" > <el-form-item label="信令安全模式" >
<el-select v-model="form.gbSafetyWay" style="width: 100%" placeholder="请选择"> <el-select v-model="form.gbSafetyWay" style="width: 100%" placeholder="请选择信令安全模式">
<el-option label="不采用" :value="0"></el-option> <el-option label="不采用" :value="0"></el-option>
<el-option label="S/MIME签名" :value="2"></el-option> <el-option label="S/MIME签名" :value="2"></el-option>
<el-option label="S/MIME加密签名同时采用" :value="3"></el-option> <el-option label="S/MIME加密签名同时采用" :value="3"></el-option>
@ -52,25 +43,23 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="注册方式" > <el-form-item label="注册方式" >
<el-select v-model="form.gbRegisterWay" style="width: 100%" placeholder="请选择"> <el-select v-model="form.gbRegisterWay" style="width: 100%" placeholder="请选择注册方式">
<el-option label="IETFRFC3261标准" :value="1"></el-option> <el-option label="IETFRFC3261标准" :value="1"></el-option>
<el-option label="基于口令的双向认证" :value="2"></el-option> <el-option label="基于口令的双向认证" :value="2"></el-option>
<el-option label="基于数字证书的双向认证注册" :value="3"></el-option> <el-option label="基于数字证书的双向认证注册" :value="3"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="证书序列号" > <el-form-item label="证书序列号" >
<el-input type="number" v-if="form.certNum" v-model="form.gbCertNum" :placeholder="form.certNum"></el-input> <el-input type="number" v-model="form.gbCertNum" placeholder="请输入证书序列号"></el-input>
<el-input type="number" v-if="!form.certNum" v-model="form.gbCertNum" placeholder="请输入证书序列号"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="证书有效标识" > <el-form-item label="证书有效标识" >
<el-select v-model="form.gbCertifiable" style="width: 100%" placeholder="请选择"> <el-select v-model="form.gbCertifiable" style="width: 100%" placeholder="请选择证书有效标识">
<el-option label="有效" :value="1"></el-option> <el-option label="有效" :value="1"></el-option>
<el-option label="无效" :value="0"></el-option> <el-option label="无效" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="无效原因码" > <el-form-item label="无效原因码" >
<el-input type="errCode" v-if="form.gbErrCode" v-model="form.gbCertNum" :placeholder="form.errCode"></el-input> <el-input type="errCode" v-model="form.gbCertNum" placeholder="请输入无效原因码"></el-input>
<el-input type="errCode" v-if="!form.gbErrCode" v-model="form.gbCertNum" placeholder="请输入无效原因码"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="证书终止有效期" > <el-form-item label="证书终止有效期" >
<el-date-picker <el-date-picker
@ -79,6 +68,109 @@
placeholder="选择日期时间"> placeholder="选择日期时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="保密属性" >
<el-select v-model="form.gbSecrecy" style="width: 100%" placeholder="请选择保密属性">
<el-option label="不涉密" :value="0"></el-option>
<el-option label="涉密" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="IP地址" >
<el-input v-model="form.gbIpAddress" placeholder="请输入IP地址"></el-input>
</el-form-item>
<el-form-item label="端口" >
<el-input type="number" v-model="form.gbPort" placeholder="请输入端口"></el-input>
</el-form-item>
<el-form-item label="设备口令" >
<el-input v-model="form.gbPassword" placeholder="请输入设备口令"></el-input>
</el-form-item>
<el-form-item label="设备状态" >
<el-select v-model="form.gbStatus" style="width: 100%" placeholder="请选择设备状态">
<el-option label="在线" value="ON"></el-option>
<el-option label="离线" value="OFF"></el-option>
</el-select>
</el-form-item>
<el-form-item label="经度" >
<el-input v-model="form.gbLongitude" placeholder="请输入经度"></el-input>
</el-form-item>
<el-form-item label="纬度" >
<el-input v-model="form.gbLatitude" placeholder="请输入纬度"></el-input>
</el-form-item>
<el-form-item label="业务分组编号" >
<el-input v-model="form.gbBusinessGroupId" placeholder="请输入业务分组编号"></el-input>
</el-form-item>
<el-form-item label="云台类型" >
<el-select v-model="form.gbStatus" style="width: 100%" placeholder="请选择云台类型">
<el-option label="球机" :value="1"></el-option>
<el-option label="半球" :value="2"></el-option>
<el-option label="固定枪机" :value="3"></el-option>
<el-option label="遥控枪机" :value="4"></el-option>
<el-option label="遥控半球" :value="5"></el-option>
<el-option label="多目设备的全景/拼接通道" :value="6"></el-option>
<el-option label="多目设备的分割通道" :value="7"></el-option>
</el-select>
</el-form-item>
<el-form-item label="位置类型" >
<el-select v-model="form.gbPositionType" style="width: 100%" placeholder="请选择位置类型">
<el-option label="省际检查站" :value="1"></el-option>
<el-option label="党政机关" :value="2"></el-option>
<el-option label="车站码头" :value="3"></el-option>
<el-option label="中心广场" :value="4"></el-option>
<el-option label="体育场馆" :value="5"></el-option>
<el-option label="商业中心" :value="6"></el-option>
<el-option label="宗教场所" :value="7"></el-option>
<el-option label="校园周边" :value="8"></el-option>
<el-option label="治安复杂区域" :value="9"></el-option>
<el-option label="交通干线" :value="10"></el-option>
</el-select>
</el-form-item>
<el-form-item label="室外/室内" >
<el-select v-model="form.gbRoomType" style="width: 100%" placeholder="请选择位置类型">
<el-option label="室外" :value="1"></el-option>
<el-option label="室内" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="用途" >
<el-select v-model="form.gbUseType" style="width: 100%" placeholder="请选择位置类型">
<el-option label="治安" :value="1"></el-option>
<el-option label="交通" :value="2"></el-option>
<el-option label="重点" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="补光" >
<el-select v-model="form.gbUseType" style="width: 100%" placeholder="请选择位置类型">
<el-option label="无补光" :value="1"></el-option>
<el-option label="红外补光" :value="2"></el-option>
<el-option label="白光补光" :value="3"></el-option>
<el-option label="激光补光" :value="4"></el-option>
<el-option label="其他" :value="9"></el-option>
</el-select>
</el-form-item>
<el-form-item label="监视方位" >
<el-select v-model="form.gbUseType" style="width: 100%" placeholder="请选择位置类型">
<el-option label="东(西向东)" :value="1"></el-option>
<el-option label="西(东向西)" :value="2"></el-option>
<el-option label="南(北向南)" :value="3"></el-option>
<el-option label="北(南向北)" :value="4"></el-option>
<el-option label="东南(西北到东南)" :value="5"></el-option>
<el-option label="东北(西南到东北)" :value="6"></el-option>
<el-option label="西南(东北到西南)" :value="7"></el-option>
<el-option label="西北(东南到西北)" :value="8"></el-option>
</el-select>
</el-form-item>
<el-form-item label="分辨率" >
<el-input v-model="form.gbResolution" placeholder="请输入分辨率"></el-input>
</el-form-item>
<el-form-item label="下载倍速" >
<el-select v-model="form.gbDownloadSpeedArray" @change="test" multiple style="width: 100%" placeholder="请选择位置类型">
<el-option label="1倍速" value="1"></el-option>
<el-option label="2倍速" value="2"></el-option>
<el-option label="4倍速" value="4"></el-option>
<el-option label="8倍速" value="8"></el-option>
<el-option label="16倍速" value="16"></el-option>
</el-select>
</el-form-item>
<div style="float: right;"> <div style="float: right;">
<el-button type="primary" size="mini" @click="onSubmit"></el-button> <el-button type="primary" size="mini" @click="onSubmit"></el-button>
@ -96,26 +188,12 @@ export default {
computed: {}, computed: {},
created() { created() {
// //
this.getCommonChannel(data=>{ this.getCommonChannel()
if (data.gbDeviceDbId) {
//
this.getDeviceChannel(chanel=>{
this.form = chanel;
console.log(chanel)
})
}else {
this.form = data;
console.log(data)
}
})
}, },
data() { data() {
return { return {
locading: true, locading: true,
form: { form: {},
gbName: "测试",
gbNameLabel: "测试"
},
}; };
}, },
methods: { methods: {
@ -125,7 +203,10 @@ export default {
close: function () { close: function () {
}, },
getCommonChannel:function (callback) { test: function () {
console.log(this.form.gbDownloadSpeedArray)
},
getCommonChannel:function () {
this.$axios({ this.$axios({
method: 'get', method: 'get',
url: "/api/common/channel/one", url: "/api/common/channel/one",
@ -134,9 +215,8 @@ export default {
} }
}).then((res) => { }).then((res) => {
if (res.data.code === 0) { if (res.data.code === 0) {
if(callback) { res.data.data.gbDownloadSpeedArray = res.data.data.gbDownloadSpeed.split("/")
callback(res.data.data) this.form = res.data.data;
}
} }
}).catch((error) => { }).catch((error) => {
console.error(error) console.error(error)
@ -144,25 +224,25 @@ export default {
this.locading = false this.locading = false
]) ])
}, },
getDeviceChannel:function (callback) { // getDeviceChannel:function (callback) {
this.$axios({ // this.$axios({
method: 'get', // method: 'get',
url: "/api/device/query/channel/raw", // url: "/api/device/query/channel/raw",
params: { // params: {
id: this.id // id: this.id
} // }
}).then((res) => { // }).then((res) => {
if (res.data.code === 0) { // if (res.data.code === 0) {
if(callback) { // if(callback) {
callback(res.data.data) // callback(res.data.data)
} // }
} // }
}).catch((error) => { // }).catch((error) => {
console.error(error) // console.error(error)
}).finally(()=>[ // }).finally(()=>[
this.locading = false // this.locading = false
]) // ])
} // }
}, },
}; };
</script> </script>