78 changed files with 1806 additions and 518 deletions
@ -0,0 +1,83 @@ |
|||||
|
<template> |
||||
|
<w-dialog ref="dialogRef" width="960px" height="760px" :title="`${curveTypeRef} - ${detailRef?.modelName}(${detailRef?.modelId})`" :can-maximize="false"> |
||||
|
<div class="px-2"> |
||||
|
<w-grid |
||||
|
v-if="'ROC' === curveTypeRef" |
||||
|
:checkbox-selection="false" |
||||
|
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/roc?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
||||
|
:pageable="true" |
||||
|
:toolbar-actions="['refresh', 'separator', 'export']" |
||||
|
:columns="[ |
||||
|
{ width: 100, name: 'scoreCutOffPoint', label: $t('io.sc.engine.mv.result.curve.scoreCutOffPoint'), align: 'right' }, |
||||
|
{ width: 100, name: 'dd', label: $t('io.sc.engine.mv.result.curve.roc.dd'), align: 'right' }, |
||||
|
{ width: 100, name: 'dn', label: $t('io.sc.engine.mv.result.curve.roc.dn'), align: 'right' }, |
||||
|
{ width: 100, name: 'nd', label: $t('io.sc.engine.mv.result.curve.roc.nd'), align: 'right' }, |
||||
|
{ width: 100, name: 'nn', label: $t('io.sc.engine.mv.result.curve.roc.nn'), align: 'right' }, |
||||
|
{ width: 100, name: 'td', label: $t('io.sc.engine.mv.result.curve.roc.td'), align: 'right' }, |
||||
|
{ width: 100, name: 'tn', label: $t('io.sc.engine.mv.result.curve.roc.tn'), align: 'right' }, |
||||
|
{ width: 100, name: 'x', label: $t('io.sc.engine.mv.result.curve.roc.x'), align: 'right' }, |
||||
|
{ width: 100, name: 'y', label: $t('io.sc.engine.mv.result.curve.roc.y'), align: 'right' }, |
||||
|
]" |
||||
|
></w-grid> |
||||
|
<w-grid |
||||
|
v-if="'CAP' === curveTypeRef" |
||||
|
:checkbox-selection="false" |
||||
|
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/cap?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
||||
|
:pageable="true" |
||||
|
:toolbar-actions="['refresh', 'separator', 'export']" |
||||
|
:columns="[ |
||||
|
{ width: 100, name: 'scoreCutOffPoint', label: $t('io.sc.engine.mv.result.curve.scoreCutOffPoint'), align: 'right' }, |
||||
|
{ width: 100, name: 'ts', label: $t('io.sc.engine.mv.result.curve.cap.ts'), align: 'right' }, |
||||
|
{ width: 100, name: 'tt', label: $t('io.sc.engine.mv.result.curve.cap.tt'), align: 'right' }, |
||||
|
{ width: 100, name: 'tds', label: $t('io.sc.engine.mv.result.curve.cap.tds'), align: 'right' }, |
||||
|
{ width: 100, name: 'tdt', label: $t('io.sc.engine.mv.result.curve.cap.tdt'), align: 'right' }, |
||||
|
{ width: 100, name: 'x', label: $t('io.sc.engine.mv.result.curve.cap.x'), align: 'right' }, |
||||
|
{ width: 100, name: 'y', label: $t('io.sc.engine.mv.result.curve.cap.y'), align: 'right' }, |
||||
|
]" |
||||
|
></w-grid> |
||||
|
<w-grid |
||||
|
v-if="'KS' === curveTypeRef" |
||||
|
:checkbox-selection="false" |
||||
|
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/ks?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
||||
|
:pageable="true" |
||||
|
:toolbar-actions="['refresh', 'separator', 'export']" |
||||
|
:columns="[ |
||||
|
{ width: 80, name: 'scoreCutOffPoint', label: $t('io.sc.engine.mv.result.curve.scoreCutOffPoint'), align: 'right' }, |
||||
|
{ width: 100, name: 'n', label: $t('io.sc.engine.mv.result.curve.ks.n'), align: 'right' }, |
||||
|
{ width: 100, name: 'tn', label: $t('io.sc.engine.mv.result.curve.ks.tn'), align: 'right' }, |
||||
|
{ width: 100, name: 'd', label: $t('io.sc.engine.mv.result.curve.ks.d'), align: 'right' }, |
||||
|
{ width: 100, name: 'td', label: $t('io.sc.engine.mv.result.curve.ks.td'), align: 'right' }, |
||||
|
{ width: 100, name: 'y1', label: $t('io.sc.engine.mv.result.curve.ks.y1'), align: 'right' }, |
||||
|
{ width: 100, name: 'y2', label: $t('io.sc.engine.mv.result.curve.ks.y2'), align: 'right' }, |
||||
|
]" |
||||
|
></w-grid> |
||||
|
</div> |
||||
|
</w-dialog> |
||||
|
</template> |
||||
|
<script setup lang="ts"> |
||||
|
import { ref, computed } from 'vue'; |
||||
|
import { Environment } from 'platform-core'; |
||||
|
|
||||
|
const dialogRef = ref(); |
||||
|
const curveTypeRef = ref(); |
||||
|
const detailRef = ref(); |
||||
|
|
||||
|
const open = (curveType: string, detail: any) => { |
||||
|
curveTypeRef.value = curveType; |
||||
|
detailRef.value = detail; |
||||
|
dialogRef.value.show(); |
||||
|
}; |
||||
|
|
||||
|
const close = () => { |
||||
|
dialogRef.value.hide(); |
||||
|
}; |
||||
|
|
||||
|
const title = computed(() => { |
||||
|
return curveTypeRef.value; |
||||
|
}); |
||||
|
|
||||
|
defineExpose({ |
||||
|
open, |
||||
|
close, |
||||
|
}); |
||||
|
</script> |
@ -1,119 +1,160 @@ |
|||||
<template> |
<template> |
||||
<w-grid |
<div> |
||||
:title="$t('menu.engine.mv.result')" |
<w-grid |
||||
:config-button="true" |
:ref="gridRef" |
||||
selection="multiple" |
:title="$t('menu.engine.mv.result')" |
||||
:checkbox-selection="true" |
:config-button="true" |
||||
:data-url="Environment.apiContextPath('/api/mv/result')" |
selection="multiple" |
||||
:pageable="false" |
:checkbox-selection="false" |
||||
:toolbar-configure="{ noIcon: false }" |
:data-url="Environment.apiContextPath('/api/mv/result')" |
||||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view', 'separator', 'export']" |
:pageable="false" |
||||
:columns="[ |
:toolbar-configure="{ noIcon: false }" |
||||
{ width: 150, name: 'validateDate', label: $t('io.sc.engine.mv.result.grid.entity.validateDate') }, |
:toolbar-actions="[ |
||||
{ |
'refresh', |
||||
width: 200, |
'separator', |
||||
name: 'runtimeParameters', |
{ |
||||
label: $t('io.sc.engine.mv.result.grid.entity.runtimeParameters'), |
name: 'detail', |
||||
format: (value) => { |
label: $t('detail'), |
||||
let result = ''; |
icon: 'bi-display', |
||||
for (const item of value) { |
click: (selecteds) => { |
||||
result += |
if (selecteds && selecteds.length > 0) { |
||||
$t('io.sc.engine.mv.result.grid.entity.runtimeParameters.' + item.name) + ':' + (Tools.isUndefinedOrNull(item.value) ? '' : item.value) + '<br/>'; |
const selected = selecteds[0]; |
||||
} |
resultDetailDialogRef.open(selected); |
||||
return result; |
} |
||||
}, |
|
||||
}, |
|
||||
{ width: 100, name: 'modelId', label: $t('io.sc.engine.mv.result.grid.entity.modelId') }, |
|
||||
{ width: 120, name: 'modelName', label: $t('io.sc.engine.mv.result.grid.entity.modelName') }, |
|
||||
{ width: 100, name: 'executeMode', label: $t('io.sc.engine.mv.result.grid.entity.executeMode') }, |
|
||||
{ width: 100, name: 'totalSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.totalSampleCount'), align: 'right' }, |
|
||||
{ width: 100, name: 'defaultSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.defaultSampleCount'), align: 'right' }, |
|
||||
{ |
|
||||
width: 900, |
|
||||
name: 'discrimination', |
|
||||
label: $t('io.sc.engine.mv.result.grid.entity.discrimination'), |
|
||||
columns: [ |
|
||||
{ |
|
||||
name: 'total', |
|
||||
label: $t('io.sc.engine.mv.result.grid.entity.total'), |
|
||||
columns: [ |
|
||||
{ width: 100, name: 'auc', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|
||||
{ width: 100, name: 'ar', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|
||||
{ width: 100, name: 'ks', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
name: 'quantitative', |
|
||||
label: $t('quantitative'), |
|
||||
columns: [ |
|
||||
{ width: 100, name: 'aucQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|
||||
{ width: 100, name: 'arQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|
||||
{ width: 100, name: 'ksQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|
||||
], |
|
||||
}, |
}, |
||||
{ |
}, |
||||
name: 'qualitative', |
'separator', |
||||
label: $t('qualitative'), |
'view', |
||||
columns: [ |
'separator', |
||||
{ width: 100, name: 'aucQualitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
'export', |
||||
{ width: 100, name: 'arQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
]" |
||||
{ width: 100, name: 'ksQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
:columns="[ |
||||
], |
{ width: 150, name: 'validateDate', label: $t('io.sc.engine.mv.result.grid.entity.validateDate') }, |
||||
}, |
{ width: 150, name: 'modelId', label: $t('io.sc.engine.mv.result.grid.entity.modelId') }, |
||||
], |
{ width: 200, name: 'modelName', label: $t('io.sc.engine.mv.result.grid.entity.modelName') }, |
||||
}, |
{ width: 100, name: 'executeMode', label: $t('io.sc.engine.mv.result.grid.entity.executeMode') }, |
||||
{ |
{ width: 100, name: 'totalSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.totalSampleCount'), align: 'right' }, |
||||
width: 200, |
{ width: 100, name: 'defaultSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.defaultSampleCount'), align: 'right' }, |
||||
name: 'stability', |
{ |
||||
label: $t('io.sc.engine.mv.result.grid.entity.stability'), |
width: 900, |
||||
columns: [ |
name: 'discrimination', |
||||
{ width: 100, name: 'svd', label: $t('io.sc.engine.mv.result.grid.entity.svd') }, |
label: $t('io.sc.engine.mv.result.grid.entity.discrimination'), |
||||
{ width: 100, name: 'psi', label: $t('io.sc.engine.mv.result.grid.entity.psi') }, |
columns: [ |
||||
], |
{ |
||||
}, |
name: 'total', |
||||
{ |
label: $t('io.sc.engine.mv.result.grid.entity.total'), |
||||
width: 200, |
columns: [ |
||||
name: 'scaleValidate', |
{ width: 100, name: 'auc', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
||||
label: $t('io.sc.engine.mv.result.grid.entity.scaleValidate'), |
{ width: 100, name: 'ar', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
||||
columns: [ |
{ width: 100, name: 'ks', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
||||
{ width: 100, name: 'chiSquare', label: $t('io.sc.engine.mv.result.grid.entity.chiSquare') }, |
], |
||||
{ width: 100, name: 'binomial', label: $t('io.sc.engine.mv.result.grid.entity.binomial') }, |
}, |
||||
], |
{ |
||||
}, |
name: 'quantitative', |
||||
]" |
label: $t('quantitative'), |
||||
:editor="{ |
columns: [ |
||||
dialog: { |
{ width: 100, name: 'aucQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
||||
width: '600px', |
{ width: 100, name: 'arQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
||||
height: '300px', |
{ width: 100, name: 'ksQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
||||
}, |
], |
||||
form: { |
}, |
||||
colsNum: 1, |
{ |
||||
fields: [ |
name: 'qualitative', |
||||
{ name: 'significanceLevel', label: $t('significanceLevel'), type: 'text' }, |
label: $t('qualitative'), |
||||
{ name: 'confidenceLevel', label: $t('confidenceLevel'), type: 'text' }, |
columns: [ |
||||
{ name: 'zUpper', label: $t('zUpper'), type: 'text' }, |
{ width: 100, name: 'aucQualitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
||||
{ name: 'zLower', label: $t('zLower'), type: 'text' }, |
{ width: 100, name: 'arQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
||||
], |
{ width: 100, name: 'ksQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
||||
}, |
], |
||||
}" |
}, |
||||
:viewer="{ |
], |
||||
panel: { |
}, |
||||
columnNum: 1, |
{ |
||||
fields: [ |
width: 200, |
||||
{ name: 'id', label: $t('id') }, |
name: 'stability', |
||||
{ name: 'significanceLevel', label: $t('significanceLevel') }, |
label: $t('io.sc.engine.mv.result.grid.entity.stability'), |
||||
{ name: 'confidenceLevel', label: $t('confidenceLevel') }, |
columns: [ |
||||
{ name: 'zUpper', label: $t('zUpper') }, |
{ width: 100, name: 'svd', label: $t('io.sc.engine.mv.result.grid.entity.svd') }, |
||||
{ name: 'zLower', label: $t('zLower') }, |
{ width: 100, name: 'psi', label: $t('io.sc.engine.mv.result.grid.entity.psi') }, |
||||
{ name: 'creator', label: $t('creator') }, |
], |
||||
{ name: 'createDate', label: $t('createDate') }, |
}, |
||||
{ name: 'lastModifier', label: $t('lastModifier') }, |
{ |
||||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
width: 200, |
||||
], |
name: 'scaleValidate', |
||||
}, |
label: $t('io.sc.engine.mv.result.grid.entity.scaleValidate'), |
||||
}" |
columns: [ |
||||
></w-grid> |
{ width: 100, name: 'chiSquare', label: $t('io.sc.engine.mv.result.grid.entity.chiSquare'), align: 'center', format: passOrNotFormater }, |
||||
|
{ width: 100, name: 'binomial', label: $t('io.sc.engine.mv.result.grid.entity.binomial'), align: 'center', format: passOrNotFormater }, |
||||
|
], |
||||
|
}, |
||||
|
]" |
||||
|
:viewer="{ |
||||
|
panel: { |
||||
|
columnNum: 1, |
||||
|
fields: [ |
||||
|
{ name: 'validateDate', label: $t('io.sc.engine.mv.result.grid.entity.validateDate') }, |
||||
|
{ |
||||
|
name: 'runtimeParameters', |
||||
|
label: $t('io.sc.engine.mv.result.grid.entity.runtimeParameters'), |
||||
|
format: (value) => { |
||||
|
let result = ''; |
||||
|
for (const item of value) { |
||||
|
result += |
||||
|
$t('io.sc.engine.mv.result.grid.entity.runtimeParameters.' + item.name) + |
||||
|
':' + |
||||
|
(Tools.isUndefinedOrNull(item.value) ? '' : item.value) + |
||||
|
'<br/>'; |
||||
|
} |
||||
|
return result; |
||||
|
}, |
||||
|
}, |
||||
|
{ name: 'modelId', label: $t('io.sc.engine.mv.result.grid.entity.modelId') }, |
||||
|
{ name: 'modelName', label: $t('io.sc.engine.mv.result.grid.entity.modelName') }, |
||||
|
{ name: 'executeMode', label: $t('io.sc.engine.mv.result.grid.entity.executeMode') }, |
||||
|
{ name: 'totalSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.totalSampleCount') }, |
||||
|
{ name: 'defaultSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.defaultSampleCount') }, |
||||
|
{ name: 'auc', label: $t('io.sc.engine.mv.result.grid.entity.total.auc') }, |
||||
|
{ name: 'ar', label: $t('io.sc.engine.mv.result.grid.entity.total.ar') }, |
||||
|
{ name: 'ks', label: $t('io.sc.engine.mv.result.grid.entity.total.ks') }, |
||||
|
{ name: 'aucQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.quantitative.auc') }, |
||||
|
{ name: 'arQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.quantitative.ar') }, |
||||
|
{ name: 'ksQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.quantitative.ks') }, |
||||
|
{ name: 'aucQualitative', label: $t('io.sc.engine.mv.result.grid.entity.qualitative.auc') }, |
||||
|
{ name: 'arQualitative', label: $t('io.sc.engine.mv.result.grid.entity.qualitative.ar') }, |
||||
|
{ name: 'ksQualitative', label: $t('io.sc.engine.mv.result.grid.entity.qualitative.ks') }, |
||||
|
{ name: 'svd', label: $t('io.sc.engine.mv.result.grid.entity.svd') }, |
||||
|
{ name: 'psi', label: $t('io.sc.engine.mv.result.grid.entity.psi') }, |
||||
|
{ name: 'chiSquare', label: $t('io.sc.engine.mv.result.grid.entity.chiSquare'), format: Formater.none() }, |
||||
|
{ name: 'binomial', label: $t('io.sc.engine.mv.result.grid.entity.binomial'), format: Formater.none() }, |
||||
|
], |
||||
|
}, |
||||
|
}" |
||||
|
></w-grid> |
||||
|
<ResultDetailDialog ref="resultDetailDialogRef"></ResultDetailDialog> |
||||
|
</div> |
||||
</template> |
</template> |
||||
<script setup lang="ts"> |
<script setup lang="ts"> |
||||
|
import { ref } from 'vue'; |
||||
import { Environment, Tools, Formater } from 'platform-core'; |
import { Environment, Tools, Formater } from 'platform-core'; |
||||
|
import ResultDetailDialog from './ResultDetailDialog.vue'; |
||||
|
|
||||
|
const gridRef = ref(); |
||||
|
const resultDetailDialogRef = ref(); |
||||
|
|
||||
|
const passOrNotFormater = (value) => { |
||||
|
if (Tools.isUndefinedOrNull(value)) { |
||||
|
return ''; |
||||
|
} |
||||
|
if (value === 'PASS') { |
||||
|
return { |
||||
|
componentType: 'QIcon', |
||||
|
attrs: { name: 'bi-check-circle', size: '20px', color: 'green' }, |
||||
|
}; |
||||
|
} else { |
||||
|
return { |
||||
|
componentType: 'QIcon', |
||||
|
attrs: { name: 'bi-x-circle', size: '20px', color: 'red' }, |
||||
|
}; |
||||
|
} |
||||
|
}; |
||||
</script> |
</script> |
||||
|
@ -0,0 +1,271 @@ |
|||||
|
<template> |
||||
|
<w-dialog ref="dialogRef" :title="detailRef?.modelName + '(' + detailRef?.modelId + ')'" :can-maximize="false" :maximized="true"> |
||||
|
<div class="px-2"> |
||||
|
<q-tabs v-model="selectedTabRef" inline-label align="left" :breakpoint="0" no-caps @update:model-value="tabChanged"> |
||||
|
<q-tab name="discrimination" icon="bi-people" :label="$t('io.sc.engine.mv.result.grid.entity.discrimination')" /> |
||||
|
<q-tab name="stability" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.result.grid.entity.stability')" /> |
||||
|
<q-tab name="scaleValidate" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.result.grid.entity.scaleValidate')" /> |
||||
|
</q-tabs> |
||||
|
|
||||
|
<q-tab-panels v-model="selectedTabRef" animated swipeable keep-alive> |
||||
|
<q-tab-panel name="discrimination" class="px-0"> |
||||
|
<div style="height: 50px"></div> |
||||
|
<div class="row"> |
||||
|
<div class="col-4"> |
||||
|
<div id="rocEchart" style="width: 100%; height: 300px"></div> |
||||
|
<div class="row justify-center"> |
||||
|
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'ROC' })" @click="showData('ROC')" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-4"> |
||||
|
<div id="capEchart" style="width: 100%; height: 300px"></div> |
||||
|
<div class="row justify-center"> |
||||
|
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'CAP' })" @click="showData('CAP')" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-4"> |
||||
|
<div id="ksEchart" style="width: 100%; height: 300px"></div> |
||||
|
<div class="row justify-center"> |
||||
|
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'KS' })" @click="showData('KS')" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<h3>{{ $t('io.sc.engine.mv.result.curve.references') }}:</h3> |
||||
|
<table width="100%" style="border-collapse: collapse"> |
||||
|
<tr> |
||||
|
<th class="referenceTh">{{ $t('io.sc.engine.mv.performance') }}</th> |
||||
|
<th class="referenceTh">ROC (AUC = {{ detailRef.auc }})</th> |
||||
|
<th class="referenceTh">CAP (AR = {{ detailRef.ar }})</th> |
||||
|
<th class="referenceTh">KS (KS = {{ detailRef.ks }})</th> |
||||
|
</tr> |
||||
|
<tr v-for="(level, index) in referenceLevels" :key="index"> |
||||
|
<td class="referenceTd">{{ level }}</td> |
||||
|
<td :class="valueInRange(detailRef.auc, referenceValues.auc[index]) ? 'referenceTd highlight' : 'referenceTd'"> |
||||
|
{{ referenceValues.auc[index].label }} |
||||
|
</td> |
||||
|
<td :class="valueInRange(detailRef.ar, referenceValues.ar[index]) ? 'referenceTd highlight' : 'referenceTd'"> |
||||
|
{{ referenceValues.ar[index].label }} |
||||
|
</td> |
||||
|
<td :class="valueInRange(detailRef.ks, referenceValues.ks[index]) ? 'referenceTd highlight' : 'referenceTd'"> |
||||
|
{{ referenceValues.ks[index].label }} |
||||
|
</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</q-tab-panel> |
||||
|
<q-tab-panel name="stability" class="px-0"> |
||||
|
<div style="height: 50px"></div> |
||||
|
<div class="row"> |
||||
|
<div class="col-4"> |
||||
|
<div id="psiEchart" style="width: 100%; height: 300px"></div> |
||||
|
<div class="row justify-center"> |
||||
|
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'ROC' })" @click="showData('ROC')" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</q-tab-panel> |
||||
|
<q-tab-panel name="scaleValidate" class="px-0"> |
||||
|
<div class="row"> |
||||
|
<div class="col-5 pr-2"> |
||||
|
<w-grid |
||||
|
:checkbox-selection="false" |
||||
|
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/roc?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
||||
|
:pageable="true" |
||||
|
:toolbar-actions="['refresh', 'separator', 'export']" |
||||
|
:columns="[ |
||||
|
{ width: 100, name: 'level', label: $t('io.sc.engine.mv.result.chiSquare.level'), align: 'right' }, |
||||
|
{ width: 100, name: 'pd', label: $t('io.sc.engine.mv.result.chiSquare.pd'), align: 'right' }, |
||||
|
{ width: 100, name: 'count', label: $t('io.sc.engine.mv.result.chiSquare.count'), align: 'right' }, |
||||
|
{ width: 100, name: 'defaultCount', label: $t('io.sc.engine.mv.result.chiSquare.defaultCount'), align: 'right' }, |
||||
|
{ width: 100, name: 'chiSquare', label: $t('io.sc.engine.mv.result.chiSquare.chiSquare'), align: 'right' }, |
||||
|
]" |
||||
|
></w-grid> |
||||
|
</div> |
||||
|
<div class="col-7 pl-2"> |
||||
|
<w-grid |
||||
|
:checkbox-selection="false" |
||||
|
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/roc?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
||||
|
:pageable="true" |
||||
|
:toolbar-actions="['refresh', 'separator', 'export']" |
||||
|
:columns="[ |
||||
|
{ width: 100, name: 'level', label: $t('io.sc.engine.mv.result.binomial.level'), align: 'right' }, |
||||
|
{ width: 100, name: 'pd', label: $t('io.sc.engine.mv.result.binomial.pd'), align: 'right' }, |
||||
|
{ width: 100, name: 'count', label: $t('io.sc.engine.mv.result.binomial.count'), align: 'right' }, |
||||
|
{ width: 100, name: 'defaultCount', label: $t('io.sc.engine.mv.result.binomial.defaultCount'), align: 'right' }, |
||||
|
{ width: 100, name: 'ndAvg', label: $t('io.sc.engine.mv.result.binomial.ndAvg'), align: 'right' }, |
||||
|
{ width: 100, name: 'ndSd', label: $t('io.sc.engine.mv.result.binomial.ndSd'), align: 'right' }, |
||||
|
{ width: 100, name: 'sl', label: $t('io.sc.engine.mv.result.binomial.sl'), align: 'right' }, |
||||
|
{ width: 100, name: 'cl', label: $t('io.sc.engine.mv.result.binomial.cl'), align: 'right' }, |
||||
|
{ width: 100, name: 'zUpper', label: $t('io.sc.engine.mv.result.binomial.zUpper'), align: 'right' }, |
||||
|
{ width: 100, name: 'zLower', label: $t('io.sc.engine.mv.result.binomial.zLower'), align: 'right' }, |
||||
|
{ width: 100, name: 'dUpper', label: $t('io.sc.engine.mv.result.binomial.dUpper'), align: 'right' }, |
||||
|
{ width: 100, name: 'dLower', label: $t('io.sc.engine.mv.result.binomial.dLower'), align: 'right' }, |
||||
|
{ width: 100, name: 'leUpper', label: $t('io.sc.engine.mv.result.binomial.leUpper'), align: 'right' }, |
||||
|
{ width: 100, name: 'geLower', label: $t('io.sc.engine.mv.result.binomial.geLower'), align: 'right' }, |
||||
|
]" |
||||
|
></w-grid> |
||||
|
</div> |
||||
|
</div> |
||||
|
</q-tab-panel> |
||||
|
</q-tab-panels> |
||||
|
</div> |
||||
|
<CurveDataDialog ref="curveDataDialogRef"></CurveDataDialog> |
||||
|
</w-dialog> |
||||
|
</template> |
||||
|
<script setup lang="ts"> |
||||
|
import { ref, nextTick, computed } from 'vue'; |
||||
|
import { useI18n } from 'vue-i18n'; |
||||
|
import * as echarts from 'echarts'; |
||||
|
import { axios, Environment } from 'platform-core'; |
||||
|
import CurveDataDialog from './CurveDataDialog.vue'; |
||||
|
|
||||
|
const { t } = useI18n(); |
||||
|
|
||||
|
const referenceValues = { |
||||
|
auc: [ |
||||
|
{ label: '[0.00 - 0.65)', from: 0, to: 0.65 }, |
||||
|
{ label: '[0.65 - 0.75)', from: 0.65, to: 0.75 }, |
||||
|
{ label: '[0.75 - 0.80)', from: 0.75, to: 0.8 }, |
||||
|
{ label: '[0.80 - 0.85)', from: 0.8, to: 0.85 }, |
||||
|
{ label: '[0.85 - 0.90)', from: 0.85, to: 0.9 }, |
||||
|
{ label: '[0.90 - 1.00)', from: 0.9, to: 1 }, |
||||
|
], |
||||
|
ar: [ |
||||
|
{ label: '[0.0 - 0.3)', from: 0, to: 0.3 }, |
||||
|
{ label: '[0.3 - 0.5)', from: 0.3, to: 0.5 }, |
||||
|
{ label: '[0.5 - 0.6)', from: 0.5, to: 0.6 }, |
||||
|
{ label: '[0.6 - 0.7)', from: 0.6, to: 0.7 }, |
||||
|
{ label: '[0.7 - 0.8)', from: 0.7, to: 0.8 }, |
||||
|
{ label: '[0.8 - 1.0)', from: 0.8, to: 1 }, |
||||
|
], |
||||
|
ks: [ |
||||
|
{ label: '[0.00 - 0.20)', from: 0, to: 0.2 }, |
||||
|
{ label: '[0.20 - 0.40)', from: 0.2, to: 0.4 }, |
||||
|
{ label: '[0.40 - 0.50)', from: 0.4, to: 0.5 }, |
||||
|
{ label: '[0.50 - 0.60)', from: 0.5, to: 0.6 }, |
||||
|
{ label: '[0.60 - 0.75)', from: 0.6, to: 0.75 }, |
||||
|
{ label: '[0.75 - 1.00)', from: 0.75, to: 1 }, |
||||
|
], |
||||
|
}; |
||||
|
const referenceLevels = computed(() => { |
||||
|
return [ |
||||
|
t('io.sc.platform.core.enums.GoodLevel.POOR'), |
||||
|
t('io.sc.platform.core.enums.GoodLevel.MEDIUM'), |
||||
|
t('io.sc.platform.core.enums.GoodLevel.GOOD'), |
||||
|
t('io.sc.platform.core.enums.GoodLevel.VERY_GOOD'), |
||||
|
t('io.sc.platform.core.enums.GoodLevel.EXCELLENT'), |
||||
|
t('io.sc.platform.core.enums.GoodLevel.PERFECT'), |
||||
|
]; |
||||
|
}); |
||||
|
|
||||
|
const dialogRef = ref(); |
||||
|
const detailRef = ref(); |
||||
|
const selectedTabRef = ref('discrimination'); |
||||
|
const curveDataDialogRef = ref(); |
||||
|
|
||||
|
let rocEchart; |
||||
|
let capEchart; |
||||
|
let ksEchart; |
||||
|
let psiEchart; |
||||
|
const open = (detail: any) => { |
||||
|
detailRef.value = detail; |
||||
|
dialogRef.value.show(); |
||||
|
tabChanged(); |
||||
|
}; |
||||
|
|
||||
|
const tabChanged = () => { |
||||
|
nextTick(() => { |
||||
|
if ('discrimination' === selectedTabRef.value) { |
||||
|
if (!rocEchart) { |
||||
|
rocEchart = echarts.init(document.getElementById('rocEchart')); |
||||
|
} |
||||
|
axios |
||||
|
.get(Environment.apiContextPath('/api/mv/sc/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
||||
|
.then((response) => { |
||||
|
rocEchart?.setOption(response.data); |
||||
|
rocEchart?.resize(); |
||||
|
}); |
||||
|
|
||||
|
if (!capEchart) { |
||||
|
capEchart = echarts.init(document.getElementById('capEchart')); |
||||
|
} |
||||
|
axios |
||||
|
.get(Environment.apiContextPath('/api/mv/sc/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
||||
|
.then((response) => { |
||||
|
capEchart?.setOption(response.data); |
||||
|
capEchart?.resize(); |
||||
|
}); |
||||
|
|
||||
|
if (!ksEchart) { |
||||
|
ksEchart = echarts.init(document.getElementById('ksEchart')); |
||||
|
} |
||||
|
axios |
||||
|
.get(Environment.apiContextPath('/api/mv/sc/ks/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
||||
|
.then((response) => { |
||||
|
ksEchart?.setOption(response.data); |
||||
|
ksEchart?.resize(); |
||||
|
}); |
||||
|
} else if ('stability' === selectedTabRef.value) { |
||||
|
if (!psiEchart) { |
||||
|
psiEchart = echarts.init(document.getElementById('psiEchart')); |
||||
|
} |
||||
|
axios |
||||
|
.get(Environment.apiContextPath('/api/mv/st/psi/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
||||
|
.then((response) => { |
||||
|
psiEchart?.setOption(response.data); |
||||
|
psiEchart?.resize(); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
const close = () => { |
||||
|
dialogRef.value.hide(); |
||||
|
if (rocEchart) { |
||||
|
rocEchart.dispose(); |
||||
|
} |
||||
|
if (capEchart) { |
||||
|
capEchart.dispose(); |
||||
|
} |
||||
|
if (ksEchart) { |
||||
|
ksEchart.dispose(); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
const valueInRange = (value, config) => { |
||||
|
if (value >= config.from && value < config.to) { |
||||
|
return true; |
||||
|
} |
||||
|
return false; |
||||
|
}; |
||||
|
|
||||
|
const showData = (type: string) => { |
||||
|
curveDataDialogRef.value.open(type, detailRef.value); |
||||
|
}; |
||||
|
|
||||
|
defineExpose({ |
||||
|
open, |
||||
|
close, |
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.referenceTh { |
||||
|
border: 1px solid gray; |
||||
|
padding-top: 0px; |
||||
|
padding-right: 10px; |
||||
|
padding-bottom: 0px; |
||||
|
padding-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.referenceTd { |
||||
|
border: 1px solid gray; |
||||
|
padding-top: 0px; |
||||
|
padding-right: 10px; |
||||
|
padding-bottom: 0px; |
||||
|
padding-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.highlight { |
||||
|
background-color: bisque; |
||||
|
} |
||||
|
</style> |
@ -1,169 +1,131 @@ |
|||||
<template> |
<template> |
||||
<q-tabs v-model="selectedTabRef" inline-label align="left" :breakpoint="0" no-caps> |
<div> |
||||
<q-tab name="goodSample" icon="bi-people" :label="$t('io.sc.engine.mv.sample.tabs.goodSample')" /> |
<q-tabs v-model="selectedTabRef" inline-label align="left" :breakpoint="0" no-caps> |
||||
<q-tab name="scoreRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.scoreRecord')" /> |
<q-tab name="sample" icon="bi-people" :label="$t('io.sc.engine.mv.sample.tabs.sample')" /> |
||||
<q-tab name="defaultRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.defaultRecord')" /> |
<q-tab name="scoreRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.scoreRecord')" /> |
||||
</q-tabs> |
<q-tab name="defaultRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.defaultRecord')" /> |
||||
|
</q-tabs> |
||||
|
|
||||
<q-tab-panels v-model="selectedTabRef" animated swipeable keep-alive> |
<q-tab-panels v-model="selectedTabRef" animated swipeable keep-alive> |
||||
<q-tab-panel name="goodSample" class="px-0"> |
<q-tab-panel name="sample" class="px-0"> |
||||
<w-grid |
<w-grid |
||||
:title="$t('io.sc.engine.mv.config.binomial.grid.title')" |
:title="$t('io.sc.engine.mv.sample.sample.grid.title')" |
||||
:config-button="true" |
:config-button="true" |
||||
selection="multiple" |
selection="multiple" |
||||
:checkbox-selection="true" |
:checkbox-selection="false" |
||||
:data-url="Environment.apiContextPath('/api/mv/sample/goodSample')" |
:data-url="Environment.apiContextPath('/api/mv/sample')" |
||||
:pageable="false" |
:pageable="true" |
||||
:toolbar-configure="{ noIcon: false }" |
:toolbar-configure="{ noIcon: false }" |
||||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" |
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" |
||||
:columns="[ |
:columns="[ |
||||
{ width: 100, name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
{ width: 100, name: 'customId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customId') }, |
||||
{ width: 100, name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
{ width: 100, name: 'customName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customName') }, |
||||
{ width: 120, name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
{ width: 120, name: 'modelId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelId') }, |
||||
{ width: 120, name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
{ width: 120, name: 'modelName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelName') }, |
||||
{ width: 100, name: 'lastModifier', label: $t('lastModifier') }, |
{ width: 110, name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.defaultConfirmDate'), format: Formater.dateOnly() }, |
||||
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, |
{ width: 90, name: 'pd', label: $t('io.sc.engine.mv.sample.sample.grid.entity.pd'), align: 'right' }, |
||||
]" |
{ width: 90, name: 'score', label: $t('io.sc.engine.mv.sample.sample.grid.entity.score'), align: 'right' }, |
||||
:editor="{ |
{ width: 90, name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQuantitative'), align: 'right' }, |
||||
dialog: { |
{ width: 90, name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQualitative'), align: 'right' }, |
||||
width: '600px', |
{ width: 60, name: 'level', label: $t('io.sc.engine.mv.sample.sample.grid.entity.level'), align: 'right' }, |
||||
height: '300px', |
{ width: 110, name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.beginDate'), format: Formater.dateOnly() }, |
||||
}, |
{ width: 110, name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.endDate'), format: Formater.dateOnly() }, |
||||
form: { |
]" |
||||
colsNum: 1, |
:viewer="{ |
||||
fields: [ |
panel: { |
||||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel'), type: 'text' }, |
columnNum: 1, |
||||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel'), type: 'text' }, |
fields: [ |
||||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper'), type: 'text' }, |
{ name: 'customId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customId') }, |
||||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower'), type: 'text' }, |
{ name: 'customName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customName') }, |
||||
], |
{ name: 'modelId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelId') }, |
||||
}, |
{ name: 'modelName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelName') }, |
||||
}" |
{ name: 'pd', label: $t('io.sc.engine.mv.sample.sample.grid.entity.pd') }, |
||||
:viewer="{ |
{ name: 'score', label: $t('io.sc.engine.mv.sample.sample.grid.entity.score') }, |
||||
panel: { |
{ name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQuantitative') }, |
||||
columnNum: 1, |
{ name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQualitative') }, |
||||
fields: [ |
{ name: 'level', label: $t('io.sc.engine.mv.sample.sample.grid.entity.level') }, |
||||
{ name: 'id', label: $t('id') }, |
{ name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreBeginDate'), format: Formater.none() }, |
||||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
{ name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreEndDate'), format: Formater.none() }, |
||||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
{ name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.defaultConfirmDate'), format: Formater.none() }, |
||||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
], |
||||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
}, |
||||
{ name: 'creator', label: $t('creator') }, |
}" |
||||
{ name: 'createDate', label: $t('createDate') }, |
></w-grid> |
||||
{ name: 'lastModifier', label: $t('lastModifier') }, |
</q-tab-panel> |
||||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
<q-tab-panel name="scoreRecord" class="px-0"> |
||||
], |
<w-grid |
||||
}, |
:title="$t('io.sc.engine.mv.sample.scoreRecord.grid.title')" |
||||
}" |
:config-button="true" |
||||
></w-grid> |
selection="multiple" |
||||
</q-tab-panel> |
:checkbox-selection="false" |
||||
<q-tab-panel name="scoreRecord" class="px-0"> |
:data-url="Environment.apiContextPath('/api/mv/sample/scoreRecord')" |
||||
<w-grid |
:pageable="true" |
||||
:title="$t('io.sc.engine.mv.config.binomial.grid.title')" |
:toolbar-configure="{ noIcon: false }" |
||||
:config-button="true" |
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" |
||||
selection="multiple" |
:columns="[ |
||||
:checkbox-selection="true" |
{ width: 100, name: 'customId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customId') }, |
||||
:data-url="Environment.apiContextPath('/api/mv/sample/scoreRecord')" |
{ width: 100, name: 'customName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customName') }, |
||||
:pageable="true" |
{ width: 120, name: 'modelId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelId') }, |
||||
:toolbar-configure="{ noIcon: false }" |
{ width: 150, name: 'modelName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelName') }, |
||||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" |
{ width: 90, name: 'pd', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.pd'), align: 'right' }, |
||||
:columns="[ |
{ width: 90, name: 'score', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.score'), align: 'right' }, |
||||
{ width: 100, name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
{ width: 90, name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQuantitative'), align: 'right' }, |
||||
{ width: 100, name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
{ width: 90, name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQualitative'), align: 'right' }, |
||||
{ width: 120, name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
{ width: 60, name: 'level', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.level'), align: 'right' }, |
||||
{ width: 120, name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
{ width: 110, name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreBeginDate'), format: Formater.dateOnly() }, |
||||
{ width: 100, name: 'lastModifier', label: $t('lastModifier') }, |
{ width: 110, name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreEndDate'), format: Formater.dateOnly() }, |
||||
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, |
]" |
||||
]" |
:viewer="{ |
||||
:editor="{ |
panel: { |
||||
dialog: { |
columnNum: 1, |
||||
width: '600px', |
fields: [ |
||||
height: '300px', |
{ name: 'customId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customId') }, |
||||
}, |
{ name: 'customName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customName') }, |
||||
form: { |
{ name: 'modelId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelId') }, |
||||
colsNum: 1, |
{ name: 'modelName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelName') }, |
||||
fields: [ |
{ name: 'pd', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.pd') }, |
||||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel'), type: 'text' }, |
{ name: 'score', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.score') }, |
||||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel'), type: 'text' }, |
{ name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQuantitative') }, |
||||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper'), type: 'text' }, |
{ name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQualitative') }, |
||||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower'), type: 'text' }, |
{ name: 'level', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.level') }, |
||||
], |
{ name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreBeginDate'), format: Formater.none() }, |
||||
}, |
{ name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreEndDate'), format: Formater.none() }, |
||||
}" |
], |
||||
:viewer="{ |
}, |
||||
panel: { |
}" |
||||
columnNum: 1, |
></w-grid> |
||||
fields: [ |
</q-tab-panel> |
||||
{ name: 'id', label: $t('id') }, |
<q-tab-panel name="defaultRecord" class="px-0"> |
||||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
<w-grid |
||||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
:title="$t('io.sc.engine.mv.sample.defaultRecord.grid.title')" |
||||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
:config-button="true" |
||||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
selection="multiple" |
||||
{ name: 'creator', label: $t('creator') }, |
:checkbox-selection="false" |
||||
{ name: 'createDate', label: $t('createDate') }, |
:data-url="Environment.apiContextPath('/api/mv/sample/defaultRecord')" |
||||
{ name: 'lastModifier', label: $t('lastModifier') }, |
:pageable="true" |
||||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
:toolbar-configure="{ noIcon: false }" |
||||
], |
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" |
||||
}, |
:columns="[ |
||||
}" |
{ width: 100, name: 'customId', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.customId') }, |
||||
></w-grid> |
{ width: 100, name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate') }, |
||||
</q-tab-panel> |
]" |
||||
<q-tab-panel name="defaultRecord" class="px-0"> |
:viewer="{ |
||||
<w-grid |
panel: { |
||||
:title="$t('io.sc.engine.mv.config.binomial.grid.title')" |
columnNum: 1, |
||||
:config-button="true" |
fields: [ |
||||
selection="multiple" |
{ name: 'customId', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.customId') }, |
||||
:checkbox-selection="true" |
{ name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate') }, |
||||
:data-url="Environment.apiContextPath('/api/mv/config/binomial')" |
], |
||||
:pageable="false" |
}, |
||||
:toolbar-configure="{ noIcon: false }" |
}" |
||||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" |
></w-grid> |
||||
:columns="[ |
</q-tab-panel> |
||||
{ width: 100, name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
</q-tab-panels> |
||||
{ width: 100, name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
</div> |
||||
{ width: 120, name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|
||||
{ width: 120, name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|
||||
{ width: 100, name: 'lastModifier', label: $t('lastModifier') }, |
|
||||
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, |
|
||||
]" |
|
||||
:editor="{ |
|
||||
dialog: { |
|
||||
width: '600px', |
|
||||
height: '300px', |
|
||||
}, |
|
||||
form: { |
|
||||
colsNum: 1, |
|
||||
fields: [ |
|
||||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel'), type: 'text' }, |
|
||||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel'), type: 'text' }, |
|
||||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper'), type: 'text' }, |
|
||||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower'), type: 'text' }, |
|
||||
], |
|
||||
}, |
|
||||
}" |
|
||||
:viewer="{ |
|
||||
panel: { |
|
||||
columnNum: 1, |
|
||||
fields: [ |
|
||||
{ name: 'id', label: $t('id') }, |
|
||||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|
||||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|
||||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|
||||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|
||||
{ name: 'creator', label: $t('creator') }, |
|
||||
{ name: 'createDate', label: $t('createDate') }, |
|
||||
{ name: 'lastModifier', label: $t('lastModifier') }, |
|
||||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
|
||||
], |
|
||||
}, |
|
||||
}" |
|
||||
></w-grid> |
|
||||
</q-tab-panel> |
|
||||
</q-tab-panels> |
|
||||
</template> |
</template> |
||||
<script setup lang="ts"> |
<script setup lang="ts"> |
||||
import { ref } from 'vue'; |
import { ref } from 'vue'; |
||||
import { Environment, Formater } from 'platform-core'; |
import { Environment, Formater } from 'platform-core'; |
||||
|
|
||||
const selectedTabRef = ref('goodSample'); |
const selectedTabRef = ref('sample'); |
||||
</script> |
</script> |
||||
|
@ -1,4 +1,4 @@ |
|||||
package io.sc.engine.mv.controller.core; |
package io.sc.engine.mv.controller.coe; |
||||
|
|
||||
import io.sc.engine.mv.jpa.entity.CoeBinomialHistory; |
import io.sc.engine.mv.jpa.entity.CoeBinomialHistory; |
||||
import io.sc.engine.mv.jpa.repository.CoeBinomialHistoryRepository; |
import io.sc.engine.mv.jpa.repository.CoeBinomialHistoryRepository; |
@ -1,4 +1,4 @@ |
|||||
package io.sc.engine.mv.controller.core; |
package io.sc.engine.mv.controller.coe; |
||||
|
|
||||
import io.sc.engine.mv.jpa.entity.CoeChiSquareHistory; |
import io.sc.engine.mv.jpa.entity.CoeChiSquareHistory; |
||||
import io.sc.engine.mv.jpa.repository.CoeChiSquareHistoryRepository; |
import io.sc.engine.mv.jpa.repository.CoeChiSquareHistoryRepository; |
@ -0,0 +1,21 @@ |
|||||
|
package io.sc.engine.mv.controller.sample; |
||||
|
|
||||
|
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
||||
|
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
||||
|
import io.sc.engine.mv.jpa.repository.DefaultRecordRepository; |
||||
|
import io.sc.engine.mv.service.sample.DefaultRecordService; |
||||
|
import io.sc.engine.mv.vo.DefaultRecordVo; |
||||
|
import io.sc.platform.mvc.controller.support.RestCrudController; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
/** |
||||
|
* 评分记录控制器 |
||||
|
* @author wangshaoping |
||||
|
* |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("/api/mv/sample/defaultRecord") |
||||
|
public class DefaultRecordWebController extends RestCrudController<DefaultRecordVo, DefaultRecord, DefaultRecordId, DefaultRecordRepository, DefaultRecordService> { |
||||
|
|
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
public class Axis { |
||||
|
private int gridIndex; |
||||
|
private String name; |
||||
|
private String nameLocation; |
||||
|
private int nameGap; |
||||
|
private boolean smooth; |
||||
|
private boolean boundaryGap; |
||||
|
private AxisTick axisTick =new AxisTick(); |
||||
|
private List<Object> data =new ArrayList<>(); |
||||
|
|
||||
|
public int getGridIndex() { |
||||
|
return gridIndex; |
||||
|
} |
||||
|
|
||||
|
public void setGridIndex(int gridIndex) { |
||||
|
this.gridIndex = gridIndex; |
||||
|
} |
||||
|
|
||||
|
public String getName() { |
||||
|
return name; |
||||
|
} |
||||
|
|
||||
|
public void setName(String name) { |
||||
|
this.name = name; |
||||
|
} |
||||
|
|
||||
|
public String getNameLocation() { |
||||
|
return nameLocation; |
||||
|
} |
||||
|
|
||||
|
public void setNameLocation(String nameLocation) { |
||||
|
this.nameLocation = nameLocation; |
||||
|
} |
||||
|
|
||||
|
public int getNameGap() { |
||||
|
return nameGap; |
||||
|
} |
||||
|
|
||||
|
public void setNameGap(int nameGap) { |
||||
|
this.nameGap = nameGap; |
||||
|
} |
||||
|
|
||||
|
public boolean isSmooth() { |
||||
|
return smooth; |
||||
|
} |
||||
|
|
||||
|
public void setSmooth(boolean smooth) { |
||||
|
this.smooth = smooth; |
||||
|
} |
||||
|
|
||||
|
public boolean isBoundaryGap() { |
||||
|
return boundaryGap; |
||||
|
} |
||||
|
|
||||
|
public void setBoundaryGap(boolean boundaryGap) { |
||||
|
this.boundaryGap = boundaryGap; |
||||
|
} |
||||
|
|
||||
|
public AxisTick getAxisTick() { |
||||
|
return axisTick; |
||||
|
} |
||||
|
|
||||
|
public void setAxisTick(AxisTick axisTick) { |
||||
|
this.axisTick = axisTick; |
||||
|
} |
||||
|
|
||||
|
public List<Object> getData() { |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
public void setData(List<Object> data) { |
||||
|
this.data = data; |
||||
|
} |
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
public class AxisTick { |
||||
|
private int interval; |
||||
|
|
||||
|
public int getInterval() { |
||||
|
return interval; |
||||
|
} |
||||
|
|
||||
|
public void setInterval(int interval) { |
||||
|
this.interval = interval; |
||||
|
} |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
public class Grid { |
||||
|
private boolean show =true; |
||||
|
private boolean containLabel =true; |
||||
|
|
||||
|
public boolean isShow() { |
||||
|
return show; |
||||
|
} |
||||
|
|
||||
|
public void setShow(boolean show) { |
||||
|
this.show = show; |
||||
|
} |
||||
|
|
||||
|
public boolean getContainLabel() { |
||||
|
return containLabel; |
||||
|
} |
||||
|
|
||||
|
public void setContainLabel(boolean containLabel) { |
||||
|
this.containLabel = containLabel; |
||||
|
} |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
public class Legend { |
||||
|
private int top; |
||||
|
private List<Object> data =new ArrayList<>(); |
||||
|
|
||||
|
public int getTop() { |
||||
|
return top; |
||||
|
} |
||||
|
|
||||
|
public void setTop(int top) { |
||||
|
this.top = top; |
||||
|
} |
||||
|
|
||||
|
public List<Object> getData() { |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
public void setData(List<Object> data) { |
||||
|
this.data = data; |
||||
|
} |
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
public class Option { |
||||
|
private boolean animation; |
||||
|
private Title title =new Title(); |
||||
|
private Grid grid =new Grid(); |
||||
|
private Legend legend =new Legend(); |
||||
|
private Tooltip tooltip =new Tooltip(); |
||||
|
private Axis xAxis =new Axis(); |
||||
|
private Axis yAxis=new Axis(); |
||||
|
private List<Series> series =new ArrayList<>(); |
||||
|
|
||||
|
public boolean isAnimation() { |
||||
|
return animation; |
||||
|
} |
||||
|
|
||||
|
public void setAnimation(boolean animation) { |
||||
|
this.animation = animation; |
||||
|
} |
||||
|
|
||||
|
public Title getTitle() { |
||||
|
return title; |
||||
|
} |
||||
|
|
||||
|
public void setTitle(Title title) { |
||||
|
this.title = title; |
||||
|
} |
||||
|
|
||||
|
public Grid getGrid() { |
||||
|
return grid; |
||||
|
} |
||||
|
|
||||
|
public void setGrid(Grid grid) { |
||||
|
this.grid = grid; |
||||
|
} |
||||
|
|
||||
|
public Legend getLegend() { |
||||
|
return legend; |
||||
|
} |
||||
|
|
||||
|
public void setLegend(Legend legend) { |
||||
|
this.legend = legend; |
||||
|
} |
||||
|
|
||||
|
public Tooltip getTooltip() { |
||||
|
return tooltip; |
||||
|
} |
||||
|
|
||||
|
public void setTooltip(Tooltip tooltip) { |
||||
|
this.tooltip = tooltip; |
||||
|
} |
||||
|
|
||||
|
public Axis getxAxis() { |
||||
|
return xAxis; |
||||
|
} |
||||
|
|
||||
|
public void setxAxis(Axis xAxis) { |
||||
|
this.xAxis = xAxis; |
||||
|
} |
||||
|
|
||||
|
public Axis getyAxis() { |
||||
|
return yAxis; |
||||
|
} |
||||
|
|
||||
|
public void setyAxis(Axis yAxis) { |
||||
|
this.yAxis = yAxis; |
||||
|
} |
||||
|
|
||||
|
public List<Series> getSeries() { |
||||
|
return series; |
||||
|
} |
||||
|
|
||||
|
public void setSeries(List<Series> series) { |
||||
|
this.series = series; |
||||
|
} |
||||
|
} |
@ -0,0 +1,43 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
public class Series { |
||||
|
private String name; |
||||
|
private String type; |
||||
|
private int barWidth; |
||||
|
private List<Object> data=new ArrayList<>(); |
||||
|
|
||||
|
public String getName() { |
||||
|
return name; |
||||
|
} |
||||
|
|
||||
|
public void setName(String name) { |
||||
|
this.name = name; |
||||
|
} |
||||
|
|
||||
|
public String getType() { |
||||
|
return type; |
||||
|
} |
||||
|
|
||||
|
public void setType(String type) { |
||||
|
this.type = type; |
||||
|
} |
||||
|
|
||||
|
public int getBarWidth() { |
||||
|
return barWidth; |
||||
|
} |
||||
|
|
||||
|
public void setBarWidth(int barWidth) { |
||||
|
this.barWidth = barWidth; |
||||
|
} |
||||
|
|
||||
|
public List<Object> getData() { |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
public void setData(List<Object> data) { |
||||
|
this.data = data; |
||||
|
} |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
public class Title { |
||||
|
private String text; |
||||
|
private String left; |
||||
|
|
||||
|
public String getText() { |
||||
|
return text; |
||||
|
} |
||||
|
|
||||
|
public void setText(String text) { |
||||
|
this.text = text; |
||||
|
} |
||||
|
|
||||
|
public String getLeft() { |
||||
|
return left; |
||||
|
} |
||||
|
|
||||
|
public void setLeft(String left) { |
||||
|
this.left = left; |
||||
|
} |
||||
|
} |
@ -0,0 +1,4 @@ |
|||||
|
package io.sc.engine.mv.echart; |
||||
|
|
||||
|
public class Tooltip { |
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
package io.sc.engine.mv.jpa.entity; |
||||
|
|
||||
|
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
||||
|
import io.sc.engine.mv.jpa.entity.id.ScoreRecordId; |
||||
|
import io.sc.engine.mv.vo.DefaultRecordVo; |
||||
|
import io.sc.engine.mv.vo.ScoreRecordVo; |
||||
|
import io.sc.platform.orm.entity.BaseEntity; |
||||
|
|
||||
|
import javax.persistence.*; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* 评分记录实体类 |
||||
|
* |
||||
|
*/ |
||||
|
@Entity |
||||
|
@Table(name="MV_DEFAULT_RECORD") |
||||
|
@IdClass(DefaultRecordId.class) |
||||
|
public class DefaultRecord extends BaseEntity<DefaultRecordVo> { |
||||
|
@Id |
||||
|
@Column(name="FD_CUSTOM_ID") |
||||
|
private String customId; |
||||
|
|
||||
|
@Id |
||||
|
@Column(name="FD_DEFAULT_CONFIRM_DATE") |
||||
|
private Date defaultConfirmDate; |
||||
|
|
||||
|
@Override |
||||
|
public DefaultRecordVo toVo() { |
||||
|
DefaultRecordVo vo =new DefaultRecordVo(); |
||||
|
vo.setCustomId(this.getCustomId()); |
||||
|
vo.setDefaultConfirmDate(this.getDefaultConfirmDate()); |
||||
|
return vo; |
||||
|
} |
||||
|
|
||||
|
public String getCustomId() { |
||||
|
return customId; |
||||
|
} |
||||
|
|
||||
|
public void setCustomId(String customId) { |
||||
|
this.customId = customId; |
||||
|
} |
||||
|
|
||||
|
public Date getDefaultConfirmDate() { |
||||
|
return defaultConfirmDate; |
||||
|
} |
||||
|
|
||||
|
public void setDefaultConfirmDate(Date defaultConfirmDate) { |
||||
|
this.defaultConfirmDate = defaultConfirmDate; |
||||
|
} |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
package io.sc.engine.mv.jpa.entity.id; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
import java.util.Objects; |
||||
|
|
||||
|
public class DefaultRecordId implements Serializable{ |
||||
|
private String customId; |
||||
|
private Date defaultConfirmDate; |
||||
|
|
||||
|
public String getCustomId() { |
||||
|
return customId; |
||||
|
} |
||||
|
|
||||
|
public void setCustomId(String customId) { |
||||
|
this.customId = customId; |
||||
|
} |
||||
|
|
||||
|
public Date getDefaultConfirmDate() { |
||||
|
return defaultConfirmDate; |
||||
|
} |
||||
|
|
||||
|
public void setDefaultConfirmDate(Date defaultConfirmDate) { |
||||
|
this.defaultConfirmDate = defaultConfirmDate; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public boolean equals(Object o) { |
||||
|
if (this == o) return true; |
||||
|
if (o == null || getClass() != o.getClass()) return false; |
||||
|
DefaultRecordId that = (DefaultRecordId) o; |
||||
|
return Objects.equals(customId, that.customId) && Objects.equals(defaultConfirmDate, that.defaultConfirmDate); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public int hashCode() { |
||||
|
return Objects.hash(customId, defaultConfirmDate); |
||||
|
} |
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
package io.sc.engine.mv.jpa.repository; |
||||
|
|
||||
|
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
||||
|
import io.sc.engine.mv.jpa.entity.ScoreRecord; |
||||
|
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
||||
|
import io.sc.engine.mv.jpa.entity.id.ScoreRecordId; |
||||
|
import io.sc.platform.orm.repository.DaoRepository; |
||||
|
|
||||
|
public interface DefaultRecordRepository extends DaoRepository<DefaultRecord, DefaultRecordId> { |
||||
|
|
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
package io.sc.engine.mv.service.sample; |
||||
|
|
||||
|
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
||||
|
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
||||
|
import io.sc.engine.mv.jpa.repository.DefaultRecordRepository; |
||||
|
import io.sc.platform.orm.service.DaoService; |
||||
|
|
||||
|
public interface DefaultRecordService extends DaoService<DefaultRecord, DefaultRecordId, DefaultRecordRepository> { |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
package io.sc.engine.mv.service.sample.impl; |
||||
|
|
||||
|
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
||||
|
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
||||
|
import io.sc.engine.mv.jpa.repository.DefaultRecordRepository; |
||||
|
import io.sc.engine.mv.service.sample.DefaultRecordService; |
||||
|
import io.sc.platform.orm.service.impl.DaoServiceImpl; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
@Service |
||||
|
public class DefaultRecordServiceImpl extends DaoServiceImpl<DefaultRecord, DefaultRecordId, DefaultRecordRepository> implements DefaultRecordService { |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
package io.sc.engine.mv.vo; |
||||
|
|
||||
|
import io.sc.platform.orm.api.vo.AuditorVo; |
||||
|
import io.sc.platform.orm.api.vo.BaseVo; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
public class DefaultRecordVo extends BaseVo { |
||||
|
private String customId; |
||||
|
private Date defaultConfirmDate; |
||||
|
|
||||
|
public String getCustomId() { |
||||
|
return customId; |
||||
|
} |
||||
|
|
||||
|
public void setCustomId(String customId) { |
||||
|
this.customId = customId; |
||||
|
} |
||||
|
|
||||
|
public Date getDefaultConfirmDate() { |
||||
|
return defaultConfirmDate; |
||||
|
} |
||||
|
|
||||
|
public void setDefaultConfirmDate(Date defaultConfirmDate) { |
||||
|
this.defaultConfirmDate = defaultConfirmDate; |
||||
|
} |
||||
|
} |
@ -1,2 +1,11 @@ |
|||||
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=Import From Score Record |
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=Import From Score Record |
||||
io.sc.engine.mv.ModelType.MANUAL=Manual |
io.sc.engine.mv.ModelType.MANUAL=Manual |
||||
|
|
||||
|
io.sc.engine.mv.ExecuteMode.MANUAL=Manual |
||||
|
io.sc.engine.mv.ExecuteMode.BATCH=Batch |
||||
|
|
||||
|
io.sc.engine.mv.ScaleType.SINGLE=Single |
||||
|
io.sc.engine.mv.ScaleType.MULTIPLE=Multiple |
||||
|
|
||||
|
io.sc.engine.mv.CoeResult.PASS=Pass |
||||
|
io.sc.engine.mv.CoeResult.NOT_PASS=Not Pass |
@ -1,2 +1,11 @@ |
|||||
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=\u5F9E\u8A55\u5206\u8A18\u9304\u8868\u4E2D\u5C0E\u5165 |
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=\u5F9E\u8A55\u5206\u8A18\u9304\u8868\u4E2D\u5C0E\u5165 |
||||
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u5275\u5EFA |
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u5275\u5EFA |
||||
|
|
||||
|
io.sc.engine.mv.ExecuteMode.MANUAL=\u624B\u5DE5 |
||||
|
io.sc.engine.mv.ExecuteMode.BATCH=\u8DD1\u6279 |
||||
|
|
||||
|
io.sc.engine.mv.ScaleType.SINGLE=\u55AE\u500B |
||||
|
io.sc.engine.mv.ScaleType.MULTIPLE=\u591A\u500B |
||||
|
|
||||
|
io.sc.engine.mv.CoeResult.PASS=\u901A\u904E |
||||
|
io.sc.engine.mv.CoeResult.NOT_PASS=\u672A\u901A\u904E |
@ -1,2 +1,11 @@ |
|||||
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=\u4ECE\u8BC4\u5206\u8BB0\u5F55\u8868\u4E2D\u5BFC\u5165 |
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=\u4ECE\u8BC4\u5206\u8BB0\u5F55\u8868\u4E2D\u5BFC\u5165 |
||||
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u521B\u5EFA |
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u521B\u5EFA |
||||
|
|
||||
|
io.sc.engine.mv.ExecuteMode.MANUAL=\u624B\u5DE5 |
||||
|
io.sc.engine.mv.ExecuteMode.BATCH=\u8DD1\u6279 |
||||
|
|
||||
|
io.sc.engine.mv.ScaleType.SINGLE=\u5355\u4E2A |
||||
|
io.sc.engine.mv.ScaleType.MULTIPLE=\u591A\u4E2A |
||||
|
|
||||
|
io.sc.engine.mv.CoeResult.PASS=\u901A\u8FC7 |
||||
|
io.sc.engine.mv.CoeResult.NOT_PASS=\u672A\u901A\u8FC7 |
@ -0,0 +1,73 @@ |
|||||
|
# executor |
||||
|
io.sc.engine.mv.executor.DatabaseInitExecutor.name=\u6578\u64DA\u5EAB\u521D\u59CB\u5316\u57F7\u884C\u5668 |
||||
|
io.sc.engine.mv.executor.DatabaseInitExecutor.description=\u5728\u6A21\u578B\u9A57\u8B49\u57F7\u884C\u524D\u5C0D\u6578\u64DA\u5EAB\u9032\u884C\u5FC5\u8981\u7684\u521D\u59CB\u5316\u64CD\u4F5C |
||||
|
|
||||
|
io.sc.engine.mv.executor.ResultExecutor.name=\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u57F7\u884C\u5668 |
||||
|
io.sc.engine.mv.executor.ResultExecutor.description=\u5C07\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u5B58\u5165\u9A57\u8B49\u7D50\u679C\u6B77\u53F2\u8868\u4E2D,\u4E26\u5C07\u57F7\u884C\u74B0\u5883\u548C\u53C3\u6578\u4FDD\u5B58 |
||||
|
|
||||
|
io.sc.engine.mv.executor.ResultInitExecutor.name=\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u521D\u59CB\u5316\u57F7\u884C\u5668 |
||||
|
io.sc.engine.mv.executor.ResultInitExecutor.description=\u6E05\u7A7A\u4E0A\u4E00\u6B21\u904B\u884C\u7684\u6A21\u578B\u9A57\u8B49\u7D50\u679C,\u70BA\u672C\u6B21\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u6E96\u5099\u521D\u59CB\u5316\u74B0\u5883 |
||||
|
|
||||
|
io.sc.engine.mv.executor.SampleCountExecutor.name=\u6A23\u672C\u6578\u64DA\u7D71\u8A08\u57F7\u884C\u5668 |
||||
|
io.sc.engine.mv.executor.SampleCountExecutor.description=\u7D71\u8A08\u5408\u683C\u6A23\u672C\u7684\u500B\u6578\u548C\u9055\u7D04\u6A23\u672C\u500B\u6578 |
||||
|
|
||||
|
io.sc.engine.mv.executor.SampleExecutor.name=\u5408\u683C\u6A23\u672C\u8655\u7406\u57F7\u884C\u5668 |
||||
|
io.sc.engine.mv.executor.SampleExecutor.description=\u751F\u6210\u5408\u683C\u6A23\u672C\u96C6 |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScCapExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,CAP \u66F2\u7DDA\u57F7\u884C\u5668(\u7E3D\u9AD4) |
||||
|
io.sc.engine.mv.executor.ScCapExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 CAP \u66F2\u7DDA(\u7E3D\u9AD4),\u540C\u6642\u8A08\u7B97 AR \u503C(\u7E3D\u9AD4) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScCapQualitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,CAP \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u6027) |
||||
|
io.sc.engine.mv.executor.ScCapQualitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 CAP \u66F2\u7DDA(\u5B9A\u6027),\u540C\u6642\u8A08\u7B97 AR \u503C(\u5B9A\u6027) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScCapQuantitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,CAP \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u91CF) |
||||
|
io.sc.engine.mv.executor.ScCapQuantitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 CAP \u66F2\u7DDA(\u5B9A\u91CF),\u540C\u6642\u8A08\u7B97 AR \u503C(\u5B9A\u91CF) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScKsExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,KS \u66F2\u7DDA\u57F7\u884C\u5668(\u7E3D\u9AD4) |
||||
|
io.sc.engine.mv.executor.ScKsExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 KS \u66F2\u7DDA(\u7E3D\u9AD4),\u540C\u6642\u8A08\u7B97 KS \u503C(\u7E3D\u9AD4) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScKsQualitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,KS \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u6027) |
||||
|
io.sc.engine.mv.executor.ScKsQualitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 KS \u66F2\u7DDA(\u5B9A\u6027),\u540C\u6642\u8A08\u7B97 KS \u503C(\u5B9A\u6027) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScKsQuantitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,KS \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u91CF) |
||||
|
io.sc.engine.mv.executor.ScKsQuantitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 KS \u66F2\u7DDA(\u5B9A\u91CF),\u540C\u6642\u8A08\u7B97 KS \u503C(\u5B9A\u91CF) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScRocExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,ROC \u66F2\u7DDA\u57F7\u884C\u5668(\u7E3D\u9AD4) |
||||
|
io.sc.engine.mv.executor.ScRocExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 ROC \u66F2\u7DDA(\u7E3D\u9AD4),\u540C\u6642\u8A08\u7B97 AUC \u503C(\u7E3D\u9AD4) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScRocQualitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,ROC \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u6027) |
||||
|
io.sc.engine.mv.executor.ScRocQualitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 ROC \u66F2\u7DDA(\u5B9A\u6027),\u540C\u6642\u8A08\u7B97 AUC \u503C(\u5B9A\u6027) |
||||
|
|
||||
|
io.sc.engine.mv.executor.ScRocQuantitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,ROC \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u91CF) |
||||
|
io.sc.engine.mv.executor.ScRocQuantitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 ROC \u66F2\u7DDA(\u5B9A\u91CF),\u540C\u6642\u8A08\u7B97 AUC \u503C(\u5B9A\u91CF) |
||||
|
|
||||
|
io.sc.engine.mv.executor.StPsiExecutor.name=\u6A21\u578B\u7A69\u5B9A\u6027\u9A57\u8B49,\u6A23\u672C\u7FA4\u9AD4\u7A69\u5B9A\u6027\u5831\u544A\u57F7\u884C\u5668 |
||||
|
io.sc.engine.mv.executor.StPsiExecutor.description=\u751F\u6210\u6A23\u672C\u7FA4\u9AD4\u7A69\u5B9A\u6027\u5831\u544A,\u540C\u6642\u8A08\u7B97 PSI \u503C |
||||
|
|
||||
|
io.sc.engine.mv.executor.CoeChiSquareExecutor.name=\u6A21\u578B\u4F30\u503C\u6E96\u78BA\u6027\u9A57\u8B49(\u5361\u65B9\u6AA2\u9A57) |
||||
|
io.sc.engine.mv.executor.CoeChiSquareExecutor.description=\u8A08\u7B97\u5361\u65B9\u6AA2\u9A57\u503C |
||||
|
|
||||
|
io.sc.engine.mv.executor.CoeBinomialExecutor.name=\u6A21\u578B\u4F30\u503C\u6E96\u78BA\u6027\u9A57\u8B49(\u4E8C\u9805\u6AA2\u9A57) |
||||
|
io.sc.engine.mv.executor.CoeBinomialExecutor.description=\u4E8C\u9805\u6AA2\u9A57\u503C |
||||
|
|
||||
|
io.sc.engine.mv.performance=\u6A21\u578B\u8868\u73FE |
||||
|
io.sc.engine.mv.performance.random=\u96A8\u6A5F\u6A21\u578B\u8868\u73FE |
||||
|
io.sc.engine.mv.performance.perfect=\u5B8C\u7F8E\u6A21\u578B\u8868\u73FE |
||||
|
io.sc.engine.mv.curve.roc.title=ROC \u66F2\u7DDA |
||||
|
io.sc.engine.mv.curve.roc.xAxis.title=\u8AA4\u8B66\u7387 |
||||
|
io.sc.engine.mv.curve.roc.yAxis.title=\u547D\u4E2D\u7387 |
||||
|
io.sc.engine.mv.curve.roc.series.title=\u6A21\u578B\u8868\u73FE |
||||
|
io.sc.engine.mv.curve.cap.title=CAP \u66F2\u7DDA |
||||
|
io.sc.engine.mv.curve.cap.xAxis.title=\u6A23\u672C\u500B\u6578\u767E\u5206\u6BD4 |
||||
|
io.sc.engine.mv.curve.cap.yAxis.title=\u9055\u7D04\u6A23\u672C\u500B\u6578\u767E\u5206\u6BD4 |
||||
|
io.sc.engine.mv.curve.cap.series.title=\u6A21\u578B\u8868\u73FE |
||||
|
io.sc.engine.mv.curve.ks.title=KS \u66F2\u7DDA |
||||
|
io.sc.engine.mv.curve.ks.xAxis.title=\u8A55\u5206 |
||||
|
io.sc.engine.mv.curve.ks.yAxis.title=\u6A23\u672C\u5360\u6BD4 |
||||
|
io.sc.engine.mv.curve.ks.series1.title=\u6B63\u5E38\u6A23\u672C\u5360\u6BD4 |
||||
|
io.sc.engine.mv.curve.ks.series2.title=\u9055\u7D04\u6A23\u672C\u5360\u6BD4 |
||||
|
io.sc.engine.mv.curve.psi.title=PSI \u67F1\u72C0\u5716 |
||||
|
io.sc.engine.mv.curve.psi.xAxis.title=\u5206\u6578\u6BB5 |
||||
|
io.sc.engine.mv.curve.psi.yAxis.title=\u6A23\u672C\u6578 |
||||
|
io.sc.engine.mv.curve.psi.series1.title=\u54A8\u8A62\u5EFA\u6A21\u6642 |
||||
|
io.sc.engine.mv.curve.psi.series2.title=\u6A21\u578B\u61C9\u7528\u6642 |
@ -0,0 +1,10 @@ |
|||||
|
package io.sc.platform.core.enums; |
||||
|
|
||||
|
public enum GoodLevel { |
||||
|
POOR, |
||||
|
MEDIUM, |
||||
|
GOOD, |
||||
|
VERY_GOOD, |
||||
|
EXCELLENT, |
||||
|
PERFECT; |
||||
|
} |
@ -1,5 +1,5 @@ |
|||||
dependencies { |
dependencies { |
||||
api( |
api( |
||||
project(":io.sc.platform.core"), |
project(":io.sc.platform.coe"), |
||||
) |
) |
||||
} |
} |
||||
|
@ -1,6 +1,6 @@ |
|||||
dependencies { |
dependencies { |
||||
api( |
api( |
||||
project(":io.sc.platform.core"), |
project(":io.sc.platform.coe"), |
||||
project(":io.sc.platform.orm.api"), |
project(":io.sc.platform.orm.api"), |
||||
) |
) |
||||
} |
} |
||||
|
@ -1,5 +1,5 @@ |
|||||
dependencies { |
dependencies { |
||||
api( |
api( |
||||
project(":io.sc.platform.job.core"), |
project(":io.sc.platform.job.coe"), |
||||
) |
) |
||||
} |
} |
||||
|
@ -1,5 +1,5 @@ |
|||||
dependencies { |
dependencies { |
||||
api( |
api( |
||||
"com.github.oshi:oshi-core:${oshi_version}", |
"com.github.oshi:oshi-coe:${oshi_version}", |
||||
) |
) |
||||
} |
} |
||||
|
@ -1,7 +1,7 @@ |
|||||
dependencies { |
dependencies { |
||||
api( |
api( |
||||
"com.fasterxml.jackson.core:jackson-annotations:${jackson_version}", |
"com.fasterxml.jackson.coe:jackson-annotations:${jackson_version}", |
||||
"com.fasterxml.jackson.core:jackson-core:${jackson_version}", |
"com.fasterxml.jackson.coe:jackson-coe:${jackson_version}", |
||||
"com.fasterxml.jackson.core:jackson-databind:${jackson_version}", |
"com.fasterxml.jackson.coe:jackson-databind:${jackson_version}", |
||||
) |
) |
||||
} |
} |
||||
|
Loading…
Reference in new issue