فهرست منبع

修改bug,完善代码

zhoutao 3 ماه پیش
والد
کامیت
5b5ce61555

+ 6 - 6
ipsomcadmin/src/views/bparam/btstopology.vue

@@ -100,25 +100,25 @@
         </div>
 
         <!--基站基本参数-->
-        <el-dialog width="45%" v-drag-dialog :title="dialogData.editData.title" center
+        <el-dialog width="55%" v-drag-dialog :title="dialogData.editData.title" center
             :visible.sync="dialogData.editData.show" :modal-append-to-body="false" custom-class="editDataDialog"
             :close-on-click-modal="false" :close-on-press-escape="false">
-            <location-dlg :isUpdate="dialogData.editData.isUpdate" :id="dialogData.editData.id" @get="hGetDataBaseParam"
-                @close="hCloseBaseParamDlg" v-if="dialogData.editData.show" />
+            <bts-param-dlg :isUpdate="dialogData.editData.isUpdate" :id="dialogData.editData.id"
+                @get="hGetDataBaseParam" @close="hCloseBaseParamDlg" v-if="dialogData.editData.show" />
         </el-dialog>
     </div>
 </template>
 
 
 <script>
-import LocationDlg from "./component/locationdlg.vue"
+import BtsParamDlg from "./component/btsparamdlg.vue"
 
 import { genBuildIdList, genLayerIdList } from "./basestaticdata.js"
 import { getBtsBaseParamList } from "@/api/bparam"
 export default {
     name: 'btstopology',
     components: {
-        LocationDlg
+        BtsParamDlg
     },
     data: function () {
         return {
@@ -140,7 +140,7 @@ export default {
             dialogData: {
                 editData: {
                     show: false,
-                    title: '修改定位类型',
+                    title: '基站参数',
                     isUpdate: false,
                     id: 0,
                 }

+ 164 - 10
ipsomcadmin/src/views/bparam/component/btsparamdlg.vue

@@ -28,7 +28,7 @@
 <template>
     <div class="btsparamdlg">
         <el-form :model="dialogData.editData.data" :rules="dialogData.editData.rules" ref="editDataForm"
-            label-width="100px" :size="controlSize">
+            label-width="140px" :size="controlSize">
             <el-form-item label="项目编号">
                 <el-input v-model="calProjectId" disabled auto-complete="off"></el-input>
             </el-form-item>
@@ -45,20 +45,52 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="载波编号" v-if="mainData.bts_type == 1">
+            <el-form-item label="载波编号" prop="carrier_id" v-if="mainData.bts_type == 1">
                 <el-select v-model="dialogData.editData.data.carrier_id" clearable placeholder="请选择" style="width:100%">
                     <el-option v-for="(item, index) in mainData.carrierIdList" :key="index" :label="item.label"
                         :value="item.value">
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="时隙编号" v-if="mainData.bts_type == 1">
+            <el-form-item label="时隙编号" prop="timeslot" v-if="mainData.bts_type == 1">
                 <el-select v-model="dialogData.editData.data.timeslot" clearable placeholder="请选择" style="width:100%">
                     <el-option v-for="(item, index) in mainData.timeslotIdList" :key="index" :label="item.label"
                         :value="item.value">
                     </el-option>
                 </el-select>
             </el-form-item>
+            <el-form-item label="定位类型" prop="location_type" v-if="mainData.bts_type == 1">
+                <div class="btsparamdlg__item">
+                    <div class="btsparamdlg__item-left">
+                        <el-select v-model="dialogData.editData.data.location_type" clearable placeholder="请选择"
+                            style="width:100%">
+                            <el-option v-for="(item, index) in mainData.locationTypeIdList" :key="index"
+                                :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </div>
+                    <div class="btsparamdlg__item-right">一维与融合定位,需要配置两站定位基站数量与列表
+                    </div>
+                </div>
+            </el-form-item>
+            <el-form-item label="两站定位基站数量" v-if="checkLctType && mainData.bts_type == 1">
+                <div class="btsparamdlg__item">
+                    <div class="btsparamdlg__item-left">
+                        <el-input-number :precision="0" :step="1" :min="1"
+                            v-model.trim="dialogData.editData.data.two_bts_num" auto-complete="off"
+                            style="width:100%"></el-input-number>
+                    </div>
+                    <div class="btsparamdlg__item-right">该基站要与几个基站进行两站定位</div>
+                </div>
+            </el-form-item>
+            <el-form-item label="两站定位基站列表" v-if="checkLctType && mainData.bts_type == 1">
+                <el-select v-model="dialogData.editData.twoBtsList" multiple clearable placeholder="请选择"
+                    style="width:100%">
+                    <el-option v-for="(item, index) in organizeBtsIdList" :key="index" :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
         </el-form>
         <div style="padding-top: 10px;text-align:right">
             <el-button type="success" @click.native="hQueryOamBtsParam"
@@ -73,8 +105,9 @@
 </template>
 
 <script>
-import { getBtsBaseParamById, updateBtsBaseParam, getBtsOamParamBts, setBtsOamParamBts } from "@/api/bparam"
-import { genBtsTypeList } from "../basestaticdata.js"
+import { getBtsBaseParamById, updateBtsBaseParam, getBtsOamParamBts, setBtsOamParamBts, getBtsBaseParamPageList } from "@/api/bparam"
+import { genBtsTypeList, genLocationTypeIdList } from "../basestaticdata.js"
+
 export default {
     name: 'btsparamdlg',
     props: {
@@ -99,19 +132,37 @@ export default {
             dialogData: {
                 editData: {
                     data: {
+                        build_id: 0,//大楼编号
+                        layer_id: 0,//楼层编号
                         id: 0,
                         project_id: 0,
-                        bts_id: 0,
                         bts_type: 0,
+                        bts_id: 0,
                         carrier_id: 0,
-                        timeslot: 0
+                        timeslot: 0,
+
+                        location_type: 0,//定位类型
+                        two_bts_num: 0,//两站定位基站数量
+                        two_bts_list: '',//两站定位基站队列字符串,以逗号分隔
                     },
                     rules: {
-                    }
+                        carrier_id: [
+                            { required: true, message: '请选择载波编号', trigger: 'blur' },
+                        ],
+                        timeslot: [
+                            { required: true, message: '请选择载波时隙', trigger: 'blur' },
+                        ],
+                        location_type: [
+                            { required: true, message: '请选择定位类型', trigger: 'blur' },
+                        ]
+                    },
+                    twoBtsList: [],//两站定位基站队列
                 }
             },
             mainData: {
                 btsTypeList: genBtsTypeList(),
+                locationTypeIdList: genLocationTypeIdList(),//定位类型
+                btsList: [],//基站列表
                 carrierIdList: [{ label: '请选择', value: 0 }, { label: '1号载波', value: 1 }, { label: '2号载波', value: 2 }, { label: '3号载波', value: 3 }, { label: '4号载波', value: 4 }, { label: '5号载波', value: 5 }, { label: '6号载波', value: 6 }, { label: '7号载波', value: 7 }, { label: '8号载波', value: 8 }, { label: '9号载波', value: 9 }],
                 timeslotIdList: [{ label: '请选择', value: 0 }, { label: '1号时隙', value: 1 }, { label: '2号时隙', value: 2 }, { label: '3号时隙', value: 3 }, { label: '4号时隙', value: 4 }],
                 btnEnable: true,
@@ -125,6 +176,31 @@ export default {
         controlSize() {
             return this.$store.getters.controlSize
         },
+        //组织接站ID列表
+        organizeBtsIdList() {
+            let dataList = []
+
+            this.mainData.btsList.forEach(element => {
+                let item = {}
+                item['label'] = element.bts_id.toString()
+                item['value'] = element.bts_id
+                dataList.push(item)
+            })
+
+            return dataList
+        },
+        //检查定位类型
+        checkLctType() {
+            let oneDimensionFlag = false
+            const locationType = this.dialogData.editData.data.location_type
+
+            //1维定位或者融合定位
+            if (locationType == 1 || locationType == 3) {
+                oneDimensionFlag = true
+            }
+
+            return oneDimensionFlag
+        },
         calProjectId() {
             let hexStr = this.dialogData.editData.data.project_id.toString(16).toUpperCase()
             return hexStr.padStart(8, '0')
@@ -153,6 +229,31 @@ export default {
             getBtsBaseParamById(paramData).then((res) => {
                 this.dialogData.editData.data = res.data
                 this.mainData.bts_type = this.dialogData.editData.data.bts_type
+
+                //组织一维基站数据
+                if (res.data.two_bts_list === null || typeof res.data.two_bts_list === 'undefined' || res.data.two_bts_list === "") {
+                    this.dialogData.editData.twoBtsList = []
+                } else {
+                    this.dialogData.editData.twoBtsList = res.data.two_bts_list.split(",").map(Number)
+                }
+
+                //获得与该基站在同一大楼和楼层的基站
+                this.getBtsBaseParamPageList()
+            }).catch((err) => {
+                console.log(err)
+            })
+        },
+        //查询基站列表
+        getBtsBaseParamPageList() {
+            let search = {}
+            search.project_id = this.dialogData.editData.data.project_id//项目编号
+            search.build_id = this.dialogData.editData.data.build_id//大楼编号
+            search.layer_id = this.dialogData.editData.data.layer_id//楼层编号
+
+            //查询数据
+            let param = { page_num: 1, page_size: 10000, search: search }
+            getBtsBaseParamPageList(param).then((res) => {
+                this.mainData.btsList = res.data.items
             }).catch((err) => {
                 console.log(err)
             })
@@ -178,6 +279,12 @@ export default {
                 this.$nextTick(() => {//在DOM更新完成后再渲染数据
                     this.dialogData.editData.data = res.data
                     this.dialogData.editData.data.bts_type = this.mainData.bts_type
+                    //组织一维基站数据
+                    if (res.data.two_bts_list === null || typeof res.data.two_bts_list === 'undefined' || res.data.two_bts_list === "") {
+                        this.dialogData.editData.twoBtsList = []
+                    } else {
+                        this.dialogData.editData.twoBtsList = res.data.two_bts_list.split(",").map(Number)
+                    }
                 })
             }).catch((err) => {
                 this.$message({ message: err, type: 'error' })
@@ -205,9 +312,33 @@ export default {
             paramData['carrier_id'] = this.dialogData.editData.data.carrier_id
             paramData['timeslot'] = this.dialogData.editData.data.timeslot
 
+            const locationType = parseInt(this.dialogData.editData.data.location_type)
+            let twoBtsNum = parseInt(this.dialogData.editData.data.two_bts_num)
+            let twoBtsList = this.dialogData.editData.twoBtsList.join(",")
+
+            //一维或者融合定位
+            if (locationType === 1 || locationType === 3) {
+                if (twoBtsNum <= 0 || twoBtsNum > 6) {
+                    this.$message({ message: '两站定位基站数量错误', type: 'error' })
+                    return
+                }
+
+                if (twoBtsList.length <= 0 || twoBtsList.length > 48) {
+                    this.$message({ message: '两站定位基站列表字符长度错误', type: 'error' })
+                    return
+                }
+            } else {//二维定位
+                twoBtsNum = 0
+                twoBtsList = ""
+            }
+
+            paramData['location_type'] = locationType
+            paramData['two_bts_num'] = twoBtsNum
+            paramData['two_bts_list'] = twoBtsList
+
             setBtsOamParamBts(paramData).then((res) => {
                 this.$message({ message: '远程设置参数成功', type: 'success' })
-            }).catch((err) => {
+            }).catch(() => {
                 this.$message({ message: '远程设置参数失败', type: 'error' })
             })
         },
@@ -228,10 +359,33 @@ export default {
             }
 
             paramData['id'] = parseInt(this.id)//记录ID
-
             paramData['carrier_id'] = this.dialogData.editData.data.carrier_id
             paramData['timeslot'] = this.dialogData.editData.data.timeslot
 
+            const locationType = parseInt(this.dialogData.editData.data.location_type)
+            let twoBtsNum = parseInt(this.dialogData.editData.data.two_bts_num)
+            let twoBtsList = this.dialogData.editData.twoBtsList.join(",")
+
+            //一维或者融合定位
+            if (locationType === 1 || locationType === 3) {
+                if (twoBtsNum <= 0 || twoBtsNum > 6) {
+                    this.$message({ message: '两站定位基站数量错误', type: 'error' })
+                    return
+                }
+
+                if (twoBtsList.length <= 0 || twoBtsList.length > 48) {
+                    this.$message({ message: '两站定位基站列表字符长度错误', type: 'error' })
+                    return
+                }
+            } else {//二维定位
+                twoBtsNum = 0
+                twoBtsList = ""
+            }
+
+            paramData['location_type'] = locationType
+            paramData['two_bts_num'] = twoBtsNum
+            paramData['two_bts_list'] = twoBtsList
+
             updateBtsBaseParam(paramData).then((res) => {
                 this.getData()//刷新数据
                 this.$message({ message: '保存参数成功', type: 'success' })

+ 38 - 36
ipsomcapi/module/bparam/bparamhandler/bparamhandler.go

@@ -218,16 +218,16 @@ func (obj *BparamHan) GuiUploadBtsBaseParamUpdateHan(c *gin.Context) {
 //***********************************下面是socket命令********************************************
 
 // 保存http请求通道
-func (obj *BparamHan) SaveRequestChan(httpReqChan chan interface{}, ProjectID int, BtsID int, mcpCmdType uint8) {
-	requestIdStr := fmt.Sprintf("%08X", ProjectID) + "-" + fmt.Sprintf("%08X", BtsID) + "-" + fmt.Sprintf("%d", mcpCmdType)
+func (obj *BparamHan) SaveRequestChan(httpReqChan chan interface{}, ProjectID int, BtsID int, mcpCmdType uint8, moduleId uint8) {
+	requestIdStr := fmt.Sprintf("%08X", ProjectID) + "-" + fmt.Sprintf("%08X", BtsID) + "-" + fmt.Sprintf("%d", mcpCmdType) + "-" + fmt.Sprintf("%d", moduleId)
 	public.Gpub_mutex.Lock()
 	public.Gpub_mapChan[requestIdStr] = httpReqChan //保存通道
 	public.Gpub_mutex.Unlock()
 }
 
 // 返回数据并删除http请求通道
-func (obj *BparamHan) RespDataWithChan(c *gin.Context, httpReqChan chan interface{}, ProjectID int, BtsID int, mcpCmdType uint8) {
-	requestIdStr := fmt.Sprintf("%08X", ProjectID) + "-" + fmt.Sprintf("%08X", BtsID) + "-" + fmt.Sprintf("%d", mcpCmdType)
+func (obj *BparamHan) RespDataWithChan(c *gin.Context, httpReqChan chan interface{}, ProjectID int, BtsID int, mcpCmdType uint8, moduleId uint8) {
+	requestIdStr := fmt.Sprintf("%08X", ProjectID) + "-" + fmt.Sprintf("%08X", BtsID) + "-" + fmt.Sprintf("%d", mcpCmdType) + "-" + fmt.Sprintf("%d", moduleId)
 
 	//把数据返回给客户端
 	select {
@@ -237,6 +237,8 @@ func (obj *BparamHan) RespDataWithChan(c *gin.Context, httpReqChan chan interfac
 		resp.RespFail(c, "查询超时")
 	}
 
+	close(httpReqChan) //关闭通道
+
 	public.Gpub_mutex.Lock()
 	delete(public.Gpub_mapChan, requestIdStr)
 	public.Gpub_mutex.Unlock()
@@ -254,7 +256,7 @@ func (obj *BparamHan) GetBtsOamParamDeviceHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_DEVICE)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryDeviceParam(dataModel); err != nil {
@@ -262,7 +264,7 @@ func (obj *BparamHan) GetBtsOamParamDeviceHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_DEVICE)
 }
 
 // 查询基站网管参数
@@ -277,7 +279,7 @@ func (obj *BparamHan) GetBtsOamParamNetworkHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_NETWORK)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryNetworkParam(dataModel); err != nil {
@@ -285,7 +287,7 @@ func (obj *BparamHan) GetBtsOamParamNetworkHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_NETWORK)
 }
 
 // 设置基站网管参数
@@ -300,7 +302,7 @@ func (obj *BparamHan) SetBtsOamParamNetworkHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_NETWORK)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetNetworkParam(dataModel); err != nil {
@@ -308,7 +310,7 @@ func (obj *BparamHan) SetBtsOamParamNetworkHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_NETWORK)
 }
 
 // 查询基站同步参数
@@ -323,7 +325,7 @@ func (obj *BparamHan) GetBtsOamParamSyncHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_SYNC)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQuerySyncParam(dataModel); err != nil {
@@ -331,7 +333,7 @@ func (obj *BparamHan) GetBtsOamParamSyncHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_SYNC)
 }
 
 // 设置基站同步参数
@@ -346,7 +348,7 @@ func (obj *BparamHan) SetBtsOamParamSyncHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_SYNC)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetSyncParam(dataModel); err != nil {
@@ -354,7 +356,7 @@ func (obj *BparamHan) SetBtsOamParamSyncHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_SYNC)
 }
 
 // 查询基站增益参数
@@ -369,7 +371,7 @@ func (obj *BparamHan) GetBtsOamParamGainHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_GAIN)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryGainParam(dataModel); err != nil {
@@ -377,7 +379,7 @@ func (obj *BparamHan) GetBtsOamParamGainHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_GAIN)
 }
 
 // 设置基站增益参数
@@ -392,7 +394,7 @@ func (obj *BparamHan) SetBtsOamParamGainHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_GAIN)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetGainParam(dataModel); err != nil {
@@ -400,7 +402,7 @@ func (obj *BparamHan) SetBtsOamParamGainHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_GAIN)
 }
 
 // 查询安装参数
@@ -415,7 +417,7 @@ func (obj *BparamHan) GetBtsOamParamInstallHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_INSTALL)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryInstallParam(dataModel); err != nil {
@@ -423,7 +425,7 @@ func (obj *BparamHan) GetBtsOamParamInstallHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_INSTALL)
 }
 
 // 配置基站参数
@@ -438,7 +440,7 @@ func (obj *BparamHan) SetBtsOamParamInstallHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_INSTALL)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetInstallParam(dataModel); err != nil {
@@ -446,7 +448,7 @@ func (obj *BparamHan) SetBtsOamParamInstallHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_INSTALL)
 }
 
 // 查询基站参数
@@ -461,7 +463,7 @@ func (obj *BparamHan) GetBtsOamParamBtsHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_BTS)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryBtsParam(dataModel); err != nil {
@@ -469,7 +471,7 @@ func (obj *BparamHan) GetBtsOamParamBtsHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_BTS)
 }
 
 // 配置基站参数
@@ -484,7 +486,7 @@ func (obj *BparamHan) SetBtsOamParamBtsHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_BTS)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetBtsParam(dataModel); err != nil {
@@ -492,7 +494,7 @@ func (obj *BparamHan) SetBtsOamParamBtsHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_BTS)
 }
 
 // 查询定位类型参数
@@ -507,7 +509,7 @@ func (obj *BparamHan) GetBtsOamParamLocationTypeHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_BTS)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryLocationTypeParam(dataModel); err != nil {
@@ -515,7 +517,7 @@ func (obj *BparamHan) GetBtsOamParamLocationTypeHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_BTS)
 }
 
 // 配置定位类型参数
@@ -530,7 +532,7 @@ func (obj *BparamHan) SetBtsOamParamLocationTypeHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_BTS)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetLocationTypeParam(dataModel); err != nil {
@@ -538,7 +540,7 @@ func (obj *BparamHan) SetBtsOamParamLocationTypeHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_BTS)
 }
 
 // 查询rtc参数
@@ -553,7 +555,7 @@ func (obj *BparamHan) GetBtsOamParamRtcHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_RTC)
 
 	//查询基站参数
 	if err := obj.bparamOamApi.OamQueryRtcParam(dataModel); err != nil {
@@ -561,7 +563,7 @@ func (obj *BparamHan) GetBtsOamParamRtcHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_QUERY, public.BTS_MODULE_RTC)
 }
 
 // 配置rtc参数
@@ -576,7 +578,7 @@ func (obj *BparamHan) SetBtsOamParamRtcHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_RTC)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSetRtcParam(dataModel); err != nil {
@@ -584,7 +586,7 @@ func (obj *BparamHan) SetBtsOamParamRtcHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_RTC)
 }
 
 // 保存参数
@@ -599,7 +601,7 @@ func (obj *BparamHan) SaveOamParamHan(c *gin.Context) {
 
 	//生成并保存http请求通道
 	httpReqChan := make(chan interface{})
-	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.SaveRequestChan(httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_GAIN)
 
 	//设置基站参数
 	if err := obj.bparamOamApi.OamSaveParam(dataModel); err != nil {
@@ -607,7 +609,7 @@ func (obj *BparamHan) SaveOamParamHan(c *gin.Context) {
 	}
 
 	//返回数据并删除http请求通道
-	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET)
+	obj.RespDataWithChan(c, httpReqChan, dataModel.ProjectID, dataModel.BtsID, public.BTS_MCP_SET, public.BTS_MODULE_GAIN)
 }
 
 // 复位基站

+ 13 - 0
ipsomcapi/module/bparam/bparamoam/bparamoam.go

@@ -287,6 +287,10 @@ func (obj *BparamOam) OamQueryBtsParam(dataModel *bparammodel.BtsDeviceParam) er
 	obj.OamOrganizeQueryLtvA(5, uint16(oam.ORDER_BTS_CARRIER_ID), &dataList) //载波ID
 	obj.OamOrganizeQueryLtvA(5, uint16(oam.ORDER_BTS_TIMESLOT), &dataList)   //时隙ID
 
+	obj.OamOrganizeQueryLtvA(5, uint16(oam.ORDER_BTS_LOCATION_TYPE), &dataList) //定位类型
+	obj.OamOrganizeQueryLtvA(5, uint16(oam.ORDER_BTS_TWO_BTS_NUM), &dataList)   //两站定位基站数量
+	obj.OamOrganizeQueryLtvA(52, uint16(oam.ORDER_BTS_TWO_BTS_LIST), &dataList) //两站定位基站列表
+
 	//发送数据给基站
 	if err := obj.psDlApi.PsDlSendOamDataToBts(int(dataModel.ProjectID), dataModel.BtsID, psmodel.MCP_A, psmodel.MCP_A_QUERY, dataList.Bytes()); err != nil {
 		return err
@@ -311,6 +315,15 @@ func (obj *BparamOam) OamSetBtsParam(dataModel *bparammodel.BtsBaseParam) error
 	tmpBytes = []byte{byte(dataModel.Timeslot)}
 	obj.OamOrganizeSetLtvA(5, uint16(oam.ORDER_BTS_TIMESLOT), tmpBytes, &dataList)
 
+	tmpBytes = []byte{byte(dataModel.LocationType)} //定位类型
+	obj.OamOrganizeSetLtvA(5, uint16(oam.ORDER_BTS_LOCATION_TYPE), tmpBytes, &dataList)
+
+	tmpBytes = []byte{byte(dataModel.TwoBtsNum)} //两站数量
+	obj.OamOrganizeSetLtvA(5, uint16(oam.ORDER_BTS_TWO_BTS_NUM), tmpBytes, &dataList)
+
+	tmpBytes = []byte(dataModel.TwoBtsList) //两站列表
+	obj.OamOrganizeSetLtvA(52, uint16(oam.ORDER_BTS_TWO_BTS_LIST), tmpBytes, &dataList)
+
 	//发送数据给基站
 	if err := obj.psDlApi.PsDlSendOamDataToBts(int(dataModel.ProjectID), dataModel.BtsID, psmodel.MCP_A, psmodel.MCP_A_CONFIGURE, dataList.Bytes()); err != nil {
 		return err

+ 17 - 49
ipsomcapi/module/ps/mcp/mcp.go

@@ -27,7 +27,7 @@ type Mcp struct {
 // 将响应发送到http模块
 func (obj *Mcp) McpSendRespDataToHttp(stHeadModel *psmodel.PS_HEAD_T, dataModel *bparammodel.BtsBaseParam, byModuleId uint8, byMcpCmd uint8) {
 	//生成http请求id
-	requestIdStr := fmt.Sprintf("%08X", int(stHeadModel.StVpHead.ProjectID)) + "-" + fmt.Sprintf("%08X", stHeadModel.StVpHead.DeviceID) + "-" + fmt.Sprintf("%d", byMcpCmd)
+	requestIdStr := fmt.Sprintf("%08X", int(stHeadModel.StVpHead.ProjectID)) + "-" + fmt.Sprintf("%08X", stHeadModel.StVpHead.DeviceID) + "-" + fmt.Sprintf("%d", byMcpCmd) + "-" + fmt.Sprintf("%d", byModuleId)
 
 	//从map中查找通道
 	chanRespData, exist := public.Gpub_mapChan[requestIdStr]
@@ -61,43 +61,27 @@ func (obj *Mcp) McpAUlRespQuery(stHeadModel *psmodel.PS_HEAD_T, dataList []byte,
 		//根据监控命令处理
 		if wCommand <= 0x00FF { // 设备信息
 			obj.oamDeviceApi.OamDeviceQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_DEVICE {
-				byModuleId = public.BTS_MODULE_DEVICE
-			}
+			byModuleId = public.BTS_MODULE_DEVICE
 		} else if wCommand >= 0x0100 && wCommand <= 0x01FF { // 网管参数
 			obj.oamNetworkApi.OamNetrowkQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_NETWORK {
-				byModuleId = public.BTS_MODULE_NETWORK
-			}
+			byModuleId = public.BTS_MODULE_NETWORK
 		} else if wCommand >= 0x0200 && wCommand <= 0x02FF { // 上报参数
-			if byModuleId != public.BTS_MCP_REPORT {
-				byModuleId = public.BTS_MCP_REPORT
-			}
+			byModuleId = public.BTS_MCP_REPORT
 		} else if wCommand >= 0x0300 && wCommand <= 0x03FF { // 增益参数
 			obj.oamGainApi.OamGainQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_GAIN {
-				byModuleId = public.BTS_MODULE_GAIN
-			}
+			byModuleId = public.BTS_MODULE_GAIN
 		} else if wCommand >= 0x0400 && wCommand <= 0x04FF { // 安装参数
 			obj.oamInstallApi.OamInstallQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_INSTALL {
-				byModuleId = public.BTS_MODULE_INSTALL
-			}
+			byModuleId = public.BTS_MODULE_INSTALL
 		} else if wCommand >= 0x0500 && wCommand <= 0x05FF { // 同步参数
 			obj.oamSyncApi.OamSyncQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_SYNC {
-				byModuleId = public.BTS_MODULE_SYNC
-			}
+			byModuleId = public.BTS_MODULE_SYNC
 		} else if wCommand >= 0x0600 && wCommand <= 0x06FF { // 基站参数
 			obj.oamBtsApi.OamBtsQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_BTS {
-				byModuleId = public.BTS_MODULE_BTS
-			}
+			byModuleId = public.BTS_MODULE_BTS
 		} else if wCommand >= 0x0700 && wCommand <= 0x07FF { // RTC参数
 			obj.rtcApi.OamRtcQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
-			if byModuleId != public.BTS_MODULE_RTC {
-				byModuleId = public.BTS_MODULE_RTC
-			}
+			byModuleId = public.BTS_MODULE_RTC
 		} else {
 			return errors.New("监控命令错误")
 		}
@@ -138,40 +122,24 @@ func (obj *Mcp) McpAUlRespSet(stHeadModel *psmodel.PS_HEAD_T, dataList []byte, w
 
 		//根据监控命令处理
 		if wCommand <= 0x00FF { // 设备信息
-			if byModuleId != public.BTS_MODULE_DEVICE {
-				byModuleId = public.BTS_MODULE_DEVICE
-			}
+			byModuleId = public.BTS_MODULE_DEVICE
 		} else if wCommand >= 0x0100 && wCommand <= 0x01FF { // 网管参数
-			if byModuleId != public.BTS_MODULE_NETWORK {
-				byModuleId = public.BTS_MODULE_NETWORK
-			}
+			byModuleId = public.BTS_MODULE_NETWORK
 		} else if wCommand >= 0x0200 && wCommand <= 0x02FF { // 上报参数
-			if byModuleId != public.BTS_MCP_REPORT {
-				byModuleId = public.BTS_MCP_REPORT
-			}
+			byModuleId = public.BTS_MCP_REPORT
 		} else if wCommand >= 0x0300 && wCommand <= 0x03FF { // 增益参数
-			if byModuleId != public.BTS_MODULE_GAIN {
-				byModuleId = public.BTS_MODULE_GAIN
-			}
+			byModuleId = public.BTS_MODULE_GAIN
 			if wCommand == 0x03FF { //保存参数
 				btsBaseParamModel.SaveParam = ltvData[0] //保存参数结果
 			}
 		} else if wCommand >= 0x0400 && wCommand <= 0x04FF { // 安装参数
-			if byModuleId != public.BTS_MODULE_INSTALL {
-				byModuleId = public.BTS_MODULE_INSTALL
-			}
+			byModuleId = public.BTS_MODULE_INSTALL
 		} else if wCommand >= 0x0500 && wCommand <= 0x05FF { // 同步参数
-			if byModuleId != public.BTS_MODULE_SYNC {
-				byModuleId = public.BTS_MODULE_SYNC
-			}
+			byModuleId = public.BTS_MODULE_SYNC
 		} else if wCommand >= 0x0600 && wCommand <= 0x06FF { // 基站参数
-			if byModuleId != public.BTS_MODULE_BTS {
-				byModuleId = public.BTS_MODULE_BTS
-			}
+			byModuleId = public.BTS_MODULE_BTS
 		} else if wCommand >= 0x0700 && wCommand <= 0x07FF { // RTC参数
-			if byModuleId != public.BTS_MODULE_RTC {
-				byModuleId = public.BTS_MODULE_RTC
-			}
+			byModuleId = public.BTS_MODULE_RTC
 		} else {
 			return errors.New("监控命令错误")
 		}