feat:规则引擎初始化 引擎版本测试
parent
88bafc0d2e
commit
fa22a63c99
|
@ -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'
|
||||
// })
|
||||
// }
|
||||
|
|
|
@ -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
|
||||
})
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue