fix:(规则引擎本出现bug 有时候出来有时候不出)

master
zhang xu 2024-05-14 22:13:27 +08:00
parent 0fd52a109b
commit a08a23ef73
2 changed files with 196 additions and 19 deletions

View File

@ -35,7 +35,7 @@ export function getDataRegionList(data) {
})
}
// 修改【请填写功能名称
// 修改【请填写功能名称
export function updateVersion(data) {
return request({
url: '/ruleEngine/version',

View File

@ -216,21 +216,53 @@
</el-select>
</el-card>
</el-col>
<el-col :span="24">
<el-card class="box-card" v-if="assets != null">
<el-col :span="24" v-if="assets != null">
<el-card class="box-card" v-if="this.ruleEngineInfo.level === 'data-field'">
<div slot="header" class="clearfix">
<span>选择资产模型</span>
<el-button style="float: right; padding: 3px 0" type="text" @click="dataModelRandom"></el-button>
</div>
<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">{{dataModeMap[_dataModel.name]}}</el-radio>
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMapList[dataModeMapIndex][_dataModel.name].value}}</el-radio>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="box-card" v-if="this.ruleEngineInfo.level !== 'data-field'">
<div slot="header" class="clearfix">
<span>{{this.ruleEngineInfo.level === "data-set" ? "选择资产集" : "选择资产记录"}}</span>
</div>
<el-table :data="dataModeMapList" max-height="200px"
@selection-change="changeDataRow">
<el-table-column type="selection" width="55" v-if="this.ruleEngineInfo.level === 'data-set'"></el-table-column>
<el-table-column v-for="dataModel in dataModelList" :label="dataModel.name">
<template slot-scope="scope">
{{scope.row[dataModel.name].value}}
</template>
</el-table-column>
<el-table-column label="操作" v-if="this.ruleEngineInfo.level !== 'data-set'">
<template slot-scope="scope">
<el-button type="text" @click="dataRecordSelect(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<el-descriptions title="选择行数据" direction="vertical" :column="3" border style="margin-top: 20px" v-if="dataRecordSelectData != null">
<el-descriptions-item v-for="(val, key) in dataRecordSelectData"
:label="key">
<el-checkbox v-model="dataRecordSelectKeyList" :label="key" :value="key">{{val.value}}</el-checkbox>
</el-descriptions-item>
</el-descriptions>
<el-descriptions title="选择模型" :column="3" border style="margin-top: 20px" v-if="changeDataList.length !== 0">
<el-descriptions-item v-for="_dataModel in dataModelList"
:label="_dataModel.comment">
<el-checkbox v-model="dataRecordSelectKeyList" :label="_dataModel.name" :value="_dataModel.id"></el-checkbox>
</el-descriptions-item>
</el-descriptions>
</el-card>
</el-col>
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null">
<el-button>测试</el-button>
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null || dataRecordSelectKeyList.length > 0">
<el-button @click="dataTest"></el-button>
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试"></el-input>
</el-col>
</el-col>
@ -240,10 +272,16 @@
</template>
<script>
import {selectEngineVersionListByEngineId, updateMaintenance} from "@/api/ruleEngine/maintenance";
import {getMaintenance, selectEngineVersionListByEngineId, updateMaintenance} from "@/api/ruleEngine/maintenance";
import Encoding from "@/components/Encoding/index.vue";
import {addVersion, updateVersion} from "@/api/ruleEngine/version";
import {dataAssetList, listSource} from "@/api/etl/source";
import {
addVersion,
generatedCode,
getDataRegionList,
initializeRuleEngine,
updateVersion
} from "@/api/ruleEngine/version";
import {dataAssetList, listModel, listSource} from "@/api/etl/source";
export default {
name: "EngineVersion",
components: {Encoding},
@ -263,6 +301,33 @@ export default {
})
}
}
},
'assets': {
handler(val) {
if (val != null) {
let assetStructureData;
let dataAssetStructureData;
this.assetsList.forEach(_assetStructure => {
if (_assetStructure.tableName === val) {
assetStructureData = _assetStructure
}
})
this.assetStructureList.forEach(_assetStructure => {
if (_assetStructure.dataSourceName === this.assetStructure) {
dataAssetStructureData = _assetStructure
}
})
listModel({dataAssetId: assetStructureData.id}).then(res => {
this.dataModelList = res.data.rows
console.log(this.dataModelList)
})
getDataRegionList({dataSource: dataAssetStructureData,dataAsset: assetStructureData}).then(res => {
this.dataModeMapList = res.data
console.log(this.dataModeMapList)
})
}
}
}
},
data() {
@ -282,11 +347,84 @@ export default {
//
assets: null,
//
dataModelList: [],
dataModelList: [
{
id: 1,
name: "id",
comment: "主键",
isPrimaryKey: "Y",
type: "bigint",
mappingType: "Long",
length: "-",
decimalPlaces: "-",
isNull: "N",
defaultValue: "-",
isDict: "N",
dictKey: "-",
}, {
id: 2,
name: "name",
comment: "姓名",
isPrimaryKey: "N",
type: "varchar",
mappingType: "String",
length: "64",
decimalPlaces: "-",
isNull: "N",
defaultValue: "-",
isDict: "N",
dictKey: "-",
}, {
id: 3,
name: "sex",
comment: "性别",
isPrimaryKey: "N",
type: "char",
mappingType: "String",
length: "1",
decimalPlaces: "-",
isNull: "N",
defaultValue: "-",
isDict: "Y",
dictKey: "system_sex",
}, {
id: 4,
name: "price",
comment: "金额",
isPrimaryKey: "N",
type: "double",
mappingType: "BigDecimal",
length: "10",
decimalPlaces: "2",
isNull: "N",
defaultValue: "0.00",
isDict: "N",
dictKey: "-",
}, {
id: 5,
name: "create_time",
comment: "创建时间",
isPrimaryKey: "N",
type: "datetime",
mappingType: "Date",
length: "-",
decimalPlaces: "-",
isNull: "Y",
defaultValue: "-",
isDict: "N",
dictKey: "-",
}],
//
dataMode: null,
//
dataModeMap:{},
dataModeMapList: [],
dataModeMapIndex: 0,
dataRecordSelectData: null,
//key
dataRecordSelectKeyList: [],
//List
changeDataList: [],
testResult: "",
ruleEngineId: this.$route.params && this.$route.params.ruleEngineId,
ruleEngineInfo: {},
@ -296,7 +434,6 @@ export default {
"engineMaintenanceId": this.ruleEngineId,
"name": null,
"code": null,
"isTest":"0",
"status": "0",
"versionCode": "",
"isActivate": "no-activate",
@ -307,8 +444,33 @@ export default {
},
created() {
this.initRuleEngine();
this.getListVersion();
},
methods: {
//
dataRecordSelect(row) {
this.dataRecordSelectKeyList = [];
this.dataRecordSelectData = row;
},
//
dataTest(){
let number = Math.floor(Math.random()*3);
if (number === 0){
this.testResult = "测试正常,无异常数据返回";
}else if (number === 1){
this.testResult = "测试失败: 触发*****异常条例,数据发生动作[移出/忽略/记录]";
}else if (number === 2){
this.testResult = "程序异常: *****异常";
}
},
//
changeDataRow(val){
this.changeDataList = val
},
//
dataModelRandom(){
this.dataModeMapIndex = Math.floor(Math.random()*this.dataModeMapList.length)
},
//
getAssetStructureList(){
listSource({}).then(response => {
@ -371,14 +533,20 @@ export default {
this.$message.error('规则CODE不可为空');
return false;
}
this.engineVersionForm.versionCode = this.ruleEngineInfo.engineCode + "_" + this.engineVersionForm.code
this.engineVersionForm.codeIng = this.getCodeIng()
console.log(this.engineVersionForm)
generatedCode(this.engineVersionForm).then(res => {
if (res.code === 200){
console.log(res.data)
this.engineVersionForm = res.data
}
})
// this.engineVersionForm.versionCode = this.ruleEngineInfo.engineCode + "_" + this.engineVersionForm.code
// this.engineVersionForm.codeIng = this.getCodeIng()
},
//
addVersionSubmission(){
addVersion(this.engineVersionForm).then(res => {
initializeRuleEngine(this.engineVersionForm).then(res => {
if (res.code === 200){
this.engineVersionForm.isTest="0"
this.$modal.msgSuccess("新增版本成功");
this.addVersionStatus = false;
this.initRuleEngine();
@ -429,14 +597,23 @@ export default {
}
},
initRuleEngine(){
selectEngineVersionListByEngineId(this.ruleEngineId).then(res => {
console.log(res)
getMaintenance(this.ruleEngineId).then(res => {
console.log(res,"res")
if (res.code === 200){
this.ruleEngineInfo = res.data;
}
})
},
getListVersion(){
selectEngineVersionListByEngineId(this.ruleEngineId).then(res => {
console.log(res,"res")
if (res.code === 200){
this.ruleEngineInfo = res.data;
}
})
},
//
now() {
let time = new Date()
@ -470,7 +647,7 @@ import com.muyu.rule.engine.action.ActionDiscard;
import com.muyu.rule.engine.scope.${parentClass};
/**
* @Author: zhangXu
* @Author: YaoXin
* @date: ${date}
* @Description: ${this.engineVersionForm.name}-${this.engineVersionForm.code}
* @Version: 1.0