feat:规则引擎初始化 引擎版本测试

master
Wang XinLong 2024-05-15 22:38:07 +08:00
parent 88bafc0d2e
commit fa22a63c99
3 changed files with 179 additions and 31 deletions

View File

@ -144,9 +144,9 @@ export function selectAssetDataSource(id) {
}
// 获取数据实例集合
export function getDataModelMapList(id) {
return request({
url: '/source/data/getDataModel/' + id,
method: 'get'
})
}
// export function getDataModelMapList(id) {
// return request({
// url: '/source/data/getDataModel/' + id,
// method: 'get'
// })
// }

View File

@ -0,0 +1,18 @@
import request from '@/utils/request'
// 获取数据实例集合
export function getDataModelList(id) {
return request({
url: '/dataTest/test/getDataModelList/' + id,
method: 'get'
})
}
// 引擎版本测试
export function engineVersionTest(data) {
return request({
url: '/dataTest/test/engineVersionTest',
method: 'post',
data: data
})
}

View File

@ -215,7 +215,7 @@
<div slot="header" class="clearfix">
<span>选择数据接入</span>
</div>
<el-select v-model="assetStructure" @change="getAssets" style="width: 100%;">
<el-select v-model="assetStructure" style="width: 100%;">
<el-option v-for="_assetStructure in assetStructureList"
:key="_assetStructure.name"
:value="_assetStructure.id"
@ -229,7 +229,7 @@
<div slot="header" class="clearfix">
<span>选择资产结构</span>
</div>
<el-select v-model="assets" @change="getDataModel" style="width: 100%;">
<el-select v-model="assets" style="width: 100%;">
<el-option v-for="_assets in assetsList"
:key="_assets.name"
:value="_assets.id"
@ -248,8 +248,8 @@
<el-descriptions direction="vertical" :column="3" border>
<el-descriptions-item v-for="_dataModel in dataModelList"
:label='_dataModel.name + "("+_dataModel.comment+")"'>
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">
{{ dataModeMapList[dataModeMapIndex][_dataModel.name] }}
<el-radio v-model="dataModel" :label="_dataModel.name" :value="_dataModel.id">
{{ newData[dataModelMapIndex][_dataModel.name] }}
</el-radio>
</el-descriptions-item>
</el-descriptions>
@ -258,7 +258,7 @@
<div slot="header" class="clearfix">
<span>{{ this.ruleEngineInfo.scope === 2 ? "选择资产集" : "选择资产记录" }}</span>
</div>
<el-table :data="dataModeMapList" max-height="200px"
<el-table :data="newData" max-height="200px"
@selection-change="changeDataRow">
<el-table-column type="selection" width="55" v-if="this.ruleEngineInfo.scope === 2"/>
<el-table-column v-for="dataModel in dataModelList" :label="dataModel.comment" :prop="dataModel.name"/>
@ -285,7 +285,7 @@
</el-descriptions>
</el-card>
</el-col>
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null || dataRecordSelectKeyList.length > 0">
<el-col :span="24" style="margin-top: 10px" v-if="dataModel != null || dataRecordSelectKeyList.length > 0">
<el-button @click="dataTest"></el-button>
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" disabled/>
</el-col>
@ -299,7 +299,8 @@
import Encoding from "@/components/Encoding/index.vue";
import {activateEngine, closeEngine, forbiddenEngine, getRuleEngineInfo, onEngine} from "@/api/rule_engine/maintenance";
import {addVersion, createVersionClass, delVersion, updateVersion} from "@/api/rule_engine/version";
import {getAssetList, getChildrenList, getDataModelMapList, selectTableData} from "@/api/source/data";
import {getAssetList, getChildrenList, selectTableData} from "@/api/source/data";
import {engineVersionTest, getDataModelList} from "@/api/test/test";
export default {
name: "EngineVersion",
@ -338,23 +339,165 @@ export default {
//
dataModelList: [],
//
dataMode: null,
dataModel: null,
//
dataModeMapList: [],
dataModeMapIndex: 0,
dataModelMapList: [],
dataModelMapIndex: 0,
dataRecordSelectData: null,
// key
dataRecordSelectKeyList: [],
// List
changeDataList: [],
testResult: "",
versionClassCreateReq: {}
versionClassCreateReq: {},
dataName: [],
dataVal: [],
newData: [],
fieldDataModel: {},
recordDataModel: [],
dataSetDataModel: [],
engineVersionTestReq: {
scope: null,
engineVersionId: null,
keys: [],
dataModel: {},
dataModelList: [],
dataModelLists: []
}
}
},
watch: {
'assetStructure': {
handler(val) {
getChildrenList(val).then(res => {
this.assetsList = res.data
})
}
},
'assets': {
handler(val) {
this.dataModelMapIndex = 0
this.dataModel = null
selectTableData(val).then(res => {
// console.log(res)
this.dataModelList = res.data
this.dataName = []
for (let resKey in res.data) {
// console.log(resKey)
this.dataName.push(res.data[resKey].name)
}
// console.log(this.dataName)
})
//
getDataModelList(val).then(res => {
// console.log(res)
this.dataModelMapList = res.data
this.dataVal = []
this.newData = []
res.data.forEach(data => {
for (let resKey in data) {
this.dataVal.push({
key: data[resKey].key,
value: data[resKey].value
}
)
// console.log(this.dataVal)
if (this.dataVal !== null) {
let keys = this.dataName
let count = keys.length
const newData = this.dataVal.reduce((acc, curr, index) => {
if (index % count === 0 && index + count - 1 < this.dataVal.length) { //
//
const tempObj = {};
// 使 keys tempObj
for (let i = 0; i < keys.length; i++) {
// 访 kvt
tempObj[keys[i]] = (i === 0) ? parseInt(this.dataVal[index + i].value, 10) : this.dataVal[index + i].value;
}
// acc
acc.push(tempObj);
}
//
return acc;
}, []);
this.newData = newData
}
// this.dataModelMapList = this.newData
// console.log(this.newData)
}
})
})
}
}
},
created() {
this.initRuleEngine();
},
methods: {
dataTest() {
//
if (this.ruleEngineInfo.scope === 4) {
this.fieldDataModel = null;
this.dataModelMapList[this.dataModelMapIndex].forEach(dataModel => {
if (dataModel.key === this.dataModel) {
// console.log(dataModel)
this.fieldDataModel = dataModel
}
})
} else if (this.ruleEngineInfo.scope === 3) {
this.recordDataModel = []
this.engineVersionTestReq.keys = this.dataRecordSelectKeyList//
// console.log(this.dataRecordSelectData)
// console.log(this.dataRecordSelectKeyList)
this.dataModelMapList.forEach(dataModelList => {
const keys = Object.keys(this.dataRecordSelectData);
const firstKey = keys[0];
const firstValue = this.dataRecordSelectData[firstKey];
// console.log(firstValue)
// console.log(dataModelList[0].value)
if (dataModelList[0].value === firstValue) {
this.dataRecordSelectKeyList.forEach(dataRecordSelectKey => {
const foundDataModel = dataModelList.find(dataModel => dataModel.key === dataRecordSelectKey);
this.recordDataModel.push(foundDataModel)
// console.log(this.recordDataModel);
});
}
})
} else if (this.ruleEngineInfo.scope === 2) {
this.dataSetDataModel = []
this.engineVersionTestReq.keys = this.dataRecordSelectKeyList//
// console.log(this.changeDataList)
// console.log(this.dataRecordSelectKeyList)
this.changeDataList.forEach(changeData => {
const keys = Object.keys(changeData);
const firstKey = keys[0];
const firstValue = changeData[firstKey];
// console.log(firstValue)
this.recordDataModel = [];
this.dataModelMapList.forEach(dataModelList => {
if (dataModelList[0].value === firstValue) {
this.dataRecordSelectKeyList.forEach(dataRecordSelectKey => {
const foundDataModel = dataModelList.find(dataModel => dataModel.key === dataRecordSelectKey);
this.recordDataModel.push(foundDataModel)
// console.log(this.recordDataModel);
});
}
})
this.dataSetDataModel.push(this.recordDataModel)
})
// console.log(this.dataSetDataModel)
}
this.engineVersionTestReq.scope = this.ruleEngineInfo.scope
this.engineVersionTestReq.engineVersionId = this.ruleEngineVersionInfoAndTest.id
this.engineVersionTestReq.dataModel = this.fieldDataModel
this.engineVersionTestReq.dataModelList = this.recordDataModel
this.engineVersionTestReq.dataModelLists = this.dataSetDataModel
console.log(this.engineVersionTestReq)
engineVersionTest(this.engineVersionTestReq).then(res => {
console.log(res)
this.testResult = res.data
})
},
//
changeDataRow(val) {
this.changeDataList = val;
@ -366,7 +509,7 @@ export default {
},
//
dataModelRandom() {
this.dataModeMapIndex = Math.floor(Math.random() * this.dataModeMapList.length);
this.dataModelMapIndex = Math.floor(Math.random() * this.dataModelMapList.length);
},
saveCoding() {
this.ruleEngineVersionInfoAndTest.engineMaintenanceId = this.ruleEngineInfo.id
@ -516,19 +659,6 @@ export default {
}
}
},
getAssets() {
getChildrenList(this.assetStructure).then(res => {
this.assetsList = res.data
})
},
getDataModel() {
selectTableData(this.assets).then(res => {
this.dataModelList = res.data
})
getDataModelMapList(this.assets).then(res => {
this.dataModeMapList = res.data
})
},
initRuleEngine() {
getRuleEngineInfo(this.ruleEngineId).then(res => {
this.ruleEngineInfo = res.data