From 658f06778c80893e8618d62357cebf49aea9346e Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期一, 12 八月 2024 10:01:24 +0800
Subject: [PATCH] 修改
---
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/model/TestScheme.java | 3
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java | 24 +++-
web/src/views/modules/taskReliability/PlanMake.vue | 29 ++---
web/src/views/modules/taskReliability/SchemeCompar.vue | 206 +++++++++++++++++++++++++++++++++++++++++
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java | 6
5 files changed, 241 insertions(+), 27 deletions(-)
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java
index 909a23a..5f158cb 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java
@@ -3,13 +3,15 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
+
@Data
public class ConditionDto {
private String tjlx;
private Double specifiedValue;
private Double minAccepValue;
- private Double productionRisk;
- private Double userRisk;
+ private BigDecimal productionRisk;
+ private BigDecimal userRisk;
private Integer showFailureTime;
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/model/TestScheme.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/model/TestScheme.java
index aa0ab64..9340874 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/model/TestScheme.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/model/TestScheme.java
@@ -7,6 +7,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -25,7 +26,7 @@
private Integer pc;
@ApiModelProperty(value = "")
- private Double pa;
+ private BigDecimal pa;
@ApiModelProperty(value = "")
private Double value;
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
index e39eb41..439e250 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
@@ -8,10 +8,13 @@
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
@@ -46,11 +49,11 @@
public List<ResultDto> getResult(ConditionDto dto) {
List<ResultDto> result = new ArrayList<>();
List<TestScheme> list = baseDao.getList();
- if (dto.getTjlx().equals("鏉′欢1")) {
+ if (dto.getTjlx().equals("鎸夐闄╁悕涔夊�兼煡璇�")) {
result = this.getCondition1(dto, list);
- } else if (dto.getTjlx().equals("鏉′欢2")) {
+ } else if (dto.getTjlx().equals("涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ")) {
result = this.getCondition2(dto, list);
- } else if (dto.getTjlx().equals("鏉′欢3")) {
+ } else if (dto.getTjlx().equals("涓嶉檺瀹氳瀹氬�兼煡璇�")) {
result = this.getCondition3(dto, list);
}
return result;
@@ -63,7 +66,7 @@
for (int i = 1; i <= 10; i++) {
Integer finalI = i;
TestScheme data1 = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
- TestScheme data2 = list.stream().filter(k -> k.getPa().equals(1 - dto.getUserRisk()) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
+ TestScheme data2 = list.stream().filter(k -> k.getPa().equals(BigDecimal.ONE.subtract(dto.getUserRisk())) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
if (data1 != null && data2 != null) {
Double value = data2.getValue() / data1.getValue();
double strate = dto.getMinAccepValue() / dto.getSpecifiedValue();
@@ -82,11 +85,14 @@
double TST1 = 0; //T/胃1
double TST0 = 0; //T/胃0
Integer finalC = C;
- TestScheme data3 = list.stream().filter(k -> k.getPa().equals(1 - dto.getUserRisk()) && k.getPc() == (2 * finalC + 2)).findFirst().get();//
+ Stream<TestScheme> testSchemeStream = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalC + 2));
+ TestScheme data3 = testSchemeStream.findFirst().get();
if (data3 != null) {
TST1 = data3.getValue() / 2; //T/胃1
//TST1 = Convert.ToDouble(TST1.ToString("G2")); //鍙栦袱浣嶆湁鏁堟暟瀛�
- if (TST1 < 10) TST1 = TST1 + 0.1;
+ if (TST1 < 10) {
+ TST1 = TST1 + 0.1;
+ }
T = TST1 * dto.getMinAccepValue(); //鎬昏瘯楠屾椂闂�
TST0 = T / dto.getSpecifiedValue(); //T/胃0 TST1 * minAccepValue / specifiedValue
}
@@ -143,10 +149,10 @@
private List<ResultDto> getCondition3(ConditionDto dto, List<TestScheme> list) {
List<ResultDto> result = new ArrayList<>();
- for (int i = 0; i <= dto.getShowFailureTime(); i++) {
+ for (int i = 0; i < dto.getShowFailureTime(); i++) {
Integer finalI = i;
List<TestScheme> data = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalI + 2)).collect(Collectors.toList());//
- List<TestScheme> data2 = list.stream().filter(k -> k.getPa().equals(1 - dto.getProductionRisk()) && k.getPc() == (2 * finalI + 2)).collect(Collectors.toList());//
+ List<TestScheme> data2 = list.stream().filter(k -> k.getPa().equals(BigDecimal.ONE.subtract(dto.getProductionRisk())) && k.getPc() == (2 * finalI + 2)).collect(Collectors.toList());//
double T = 0;
double TST1 = 0; // T/胃1
double TST0 = 0;// T/胃0
@@ -168,7 +174,7 @@
userRisk = userRisk + Math.pow(TST1, r) * Math.pow(e, -TST1) / getjc(r);
}
ResultDto resultDto = new ResultDto();
- resultDto.setAcceptNumber(i);
+ resultDto.setAcceptNumber(i + 1);
resultDto.setTotalTestTime(String.valueOf(Math.round(T)));
resultDto.setNumber(String.valueOf(Math.round(ST0)));
resultDto.setProductionRiskReal(new Formatter().format("%.2f", productionRisk * 100).toString());
diff --git a/web/src/views/modules/taskReliability/PlanMake.vue b/web/src/views/modules/taskReliability/PlanMake.vue
index 6f8912f..d2bab9f 100644
--- a/web/src/views/modules/taskReliability/PlanMake.vue
+++ b/web/src/views/modules/taskReliability/PlanMake.vue
@@ -1,11 +1,11 @@
<template>
<div class="fa-card-b">
<el-table ref="table" :data="tjDataList" height="230px" border>
- <el-table-column align="center" prop="tjlx" width="100" label="鏉′欢绫诲瀷">
+ <el-table-column align="center" prop="tjlx" label="鏌ヨ绫诲瀷">
</el-table-column>
<el-table-column align="center" prop="specifiedValue" label="宸茬煡瑙勫畾鍊�">
<template v-slot="{ row }">
- <el-input v-model="row.specifiedValue" style="width:100%" :disabled="row.tjlx==='鏉′欢3'"></el-input>
+ <el-input v-model="row.specifiedValue" style="width:100%" :disabled="row.tjlx==='涓嶉檺瀹氳瀹氬�兼煡璇�'"></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="minAccepValue" label="鏈�浣庡彲鎺ュ彈鍊�">
@@ -16,7 +16,7 @@
<el-table-column align="center" prop="productionRisk" label="鐢熶骇鏂归闄�">
<template v-slot="{ row }">
<el-select style="width: 100%" :value-key="key" v-model="row.productionRisk"
- @change="onChange()" :disabled="row.tjlx==='鏉′欢2'">
+ :disabled="row.tjlx==='涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ'">
<el-option v-for="item in riskList" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
@@ -24,8 +24,7 @@
</el-table-column>
<el-table-column align="center" prop="userRisk" label="浣跨敤鏂归闄�">
<template v-slot="{ row }">
- <el-select style="width: 100%" :value-key="key" v-model="row.userRisk"
- @change="onChange()">
+ <el-select style="width: 100%" :value-key="key" v-model="row.userRisk">
<el-option v-for="item in riskList" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
@@ -33,7 +32,7 @@
</el-table-column>
<el-table-column align="center" prop="showFailureTime" label="鏁呴殰鎺ュ彈鍊兼渶澶ф樉绀�">
<template v-slot="{ row }">
- <el-input v-model="row.showFailureTime" style="width:100%" :disabled="row.tjlx==='鏉′欢1'"></el-input>
+ <el-input v-model="row.showFailureTime" style="width:100%" :disabled="row.tjlx==='鎸夐闄╁悕涔夊�兼煡璇�'"></el-input>
</template>
</el-table-column>
<el-table-column align="center" width="100" label="鎿嶄綔">
@@ -69,7 +68,7 @@
dataList: [],
isShow: false,
tjDataList: [{
- tjlx: '鏉′欢1',
+ tjlx: '鎸夐闄╁悕涔夊�兼煡璇�',
specifiedValue: null,
minAccepValue: null,
productionRisk: null,
@@ -77,7 +76,7 @@
showFailureTime: null
},
{
- tjlx: '鏉′欢2',
+ tjlx: '涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ',
specifiedValue: null,
minAccepValue: null,
productionRisk: null,
@@ -85,7 +84,7 @@
showFailureTime: null
},
{
- tjlx: '鏉′欢3',
+ tjlx: '涓嶉檺瀹氳瀹氬�兼煡璇�',
specifiedValue: null,
minAccepValue: null,
productionRisk: null,
@@ -137,20 +136,20 @@
this.$tip.alert("鏈�浣庡彲鎺ュ彈鍊间笉鑳藉ぇ浜庤瀹氬��")
flag =false
}
- if (row.tjlx === "鏉′欢1"){
- if (!row.specifiedValue ||!row.minAccepValue || !row.productionRisk||!userRisk) {
+ if (row.tjlx === "鎸夐闄╁悕涔夊�兼煡璇�"){
+ if (!row.specifiedValue ||!row.minAccepValue || !row.productionRisk||!row.userRisk) {
this.$tip.alert("鏈夋湭濉啓鐨勫��")
flag =false
}
}
- if (row.tjlx === "鏉′欢2"){
+ if (row.tjlx === "涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ"){
if (!row.specifiedValue ||!row.minAccepValue || !row.showFailureTime||!row.userRisk) {
this.$tip.alert("鏈夋湭濉啓鐨勫��")
flag =false
}
}
- if (row.tjlx === "鏉′欢3"){
- if (!row.showFailureTime ||!row.minAccepValue || !row.productionRisk||!userRisk) {
+ if (row.tjlx === "涓嶉檺瀹氳瀹氬�兼煡璇�"){
+ if (!row.showFailureTime ||!row.minAccepValue || !row.productionRisk||!row.userRisk) {
this.$tip.alert("鏈夋湭濉啓鐨勫��")
flag =false
}
@@ -160,7 +159,7 @@
}
let res = await this.$http.get(`/TestScheme/TestScheme/condition`, {params: row})
this.dataList = res.data
- if (row.tjlx === "鏉′欢3") {
+ if (row.tjlx === "涓嶉檺瀹氳瀹氬�兼煡璇�") {
this.isShow = true
}
}
diff --git a/web/src/views/modules/taskReliability/SchemeCompar.vue b/web/src/views/modules/taskReliability/SchemeCompar.vue
new file mode 100644
index 0000000..7efb8d0
--- /dev/null
+++ b/web/src/views/modules/taskReliability/SchemeCompar.vue
@@ -0,0 +1,206 @@
+<template>
+ <div class="fa-card-a">
+ <el-row :gutter="5">
+ <div class="mod-taskReliability-simulatAssess">
+ <el-form :inline="true" :model="dataForm" ref="dataForm" :disabled="dataForm.disabled">
+ <zt-form-item label="浜у搧鑺傜偣" prop="productId" width="100px">
+ <zt-select v-model="dataForm.productId" :datas="productList" @change="onProductSelected"/>
+ </zt-form-item>
+ <zt-form-item label="鍙潬鎬ф柟妗�" prop="taskModelId" width="500px">
+ <zt-select style="width: 400px" v-model="dataForm.name" :datas="schemeList"
+ @change="onSchemeSelected" :multiple="true"/>
+ </zt-form-item>
+ <zt-form-item>
+ <zt-button @click="compair()">鏂规瀵规瘮</zt-button>
+ </zt-form-item>
+ </el-form>
+ <div>
+ <el-col :span="4">
+ <div style="margin-right: 5px;height: calc(88vh - 100px)" v-if="isSelect">
+ <product-model-tree @on-selected="onTreeSelected" showXdy="false"
+ ref="ProductModelTree" :isShow="false" basic="4" :productId="dataForm.productId"/>
+ </div>
+ </el-col>
+ <el-col :span="20">
+ <div style="margin-top: 20px;position: relative;height: 600px">
+ <div v-if="isShow">
+ <el-button v-if="isZk" type="info" size="small" icon="el-icon-caret-bottom"
+ style="position: absolute;right: 10%;top: 10%;z-index: 1" @click="zk()"></el-button>
+ <el-button v-if="!isZk" type="info" size="small" icon="el-icon-caret-right"
+ style="position: absolute;right: 10%;top: 10%;z-index: 1" @click="zk()"></el-button>
+ <div v-if="isZk" style="position: absolute;right: 10%;top: 15%">
+ <el-table :data="tableData" border style="width: 400px">
+ <el-table-column
+ prop="name"
+ label="鏂规鍚嶇О"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="MTBF"
+ label="MTBF"
+ width="80px"
+ align="right">
+ </el-table-column>
+ <el-table-column
+ prop="MTTR"
+ label="MTTR"
+ width="80px"
+ align="right">
+ </el-table-column>
+ <el-table-column
+ prop="MSR"
+ label="MSR"
+ width="80px"
+ align="right">
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <div :disabled="isShow">
+ <div class="echart" id="myChart" :style="myChartStyle"></div>
+ </div>
+ </div>
+ </el-col>
+ </div>
+ </div>
+ </el-row>
+ </div>
+</template>
+
+<script>
+ import ProductModelTree from "../basicInfo/ProductModelTree";
+ import echart from "echarts";
+
+
+ export default {
+ data() {
+ return {
+ myChartStyle: {float: "left", width: "100%", height: "600px"}, //鍥捐〃鏍峰紡
+ isSelect: false,
+ isShow: false,
+ isZk: true,
+ productList: [],
+ schemeList: [
+ {
+ id: 1,
+ name: '鏂规涓�'
+ }, {
+ id: 2,
+ name: '鏂规浜�'
+ }, {
+ id: 3,
+ name: '鏂规涓�'
+ }
+ ],
+ dataForm: {
+ id: '',
+ pid: '',
+ productId: '',
+ showProductId: '',
+ taskModelId: '',
+ dataType: 'fz',
+ },
+ tableData: [
+ {
+ name: '鏂规涓�',
+ MTBF: '68.74',
+ MTTR: '0.43',
+ MSR: '0.85'
+ }, {
+ name: '鏂规浜�',
+ MTBF: '78.74',
+ MTTR: '0.52',
+ MSR: '0.86'
+ }, {
+ name: '鏂规涓�',
+ MTBF: '69.84',
+ MTTR: '0.62',
+ MSR: '0.88'
+ }
+ ],
+ }
+ },
+ mounted() {
+ this.getProductList()
+ },
+ components: {
+ ProductModelTree,
+ },
+
+ methods: {
+ onTreeSelected(data) {
+ if (this.dataForm.id) {
+ console.log(data, 'onProductSelected')
+ this.dataForm.showProductId = data.id
+ this.$refs.SimulatCurve.getProductEcharts(this.dataForm);
+ }
+ },
+ // 鑾峰彇淇℃伅
+ onProductSelected(data) {
+ this.isSelect = true
+ console.log(data, ' onProductSelected(data)')
+ this.dataForm.productId = data.id
+ this.$nextTick(() => {
+ this.$refs.ProductModelTree.getProductList()
+ })
+ },
+ onSchemeSelected(data) {
+ this.dataForm.id = data.id
+ },
+ zk() {
+ this.isZk = !this.isZk;
+ },
+ async getProductList() {
+ let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
+ this.productList = res.data
+ this.onProductSelected(this.productList[0])
+ },
+ compair() {
+ this.isShow = true
+ this.option = {
+ xAxis: {
+ data: [0.0, 50.0, 100.0, 150.0, 200.0, 250.0, 300.0, 350.0, 400.0, 450.0, 500.0, 550.0],
+ name: '浠跨湡鎬绘椂闀�'
+ },
+ yAxis: {
+ type: 'value',
+ name: '鍙潬搴�',
+ },
+ legend: {
+ data: ['鏂规涓�', '鏂规浜�', '鏂规涓�']
+ },
+ series: [
+ {
+ name: '鏂规涓�',
+ type: 'line',
+ smooth: true,
+ data: [1.0, 0.6, 0.39, 0.39, 0.24, 0.14, 0.08, 0.06, 0.06, 0.04, 0.02, 0.01, 0.01, 0.0, 0.0]
+ },
+ {
+ name: '鏂规浜�',
+ type: 'line',
+ smooth: true,
+ data: [1.0, 0.8, 0.59, 0.58, 0.34, 0.35, 0.18, 0.16, 0.16, 0.04, 0.04, 0.02, 0.01, 0.1, 0.0]
+ },
+ {
+ name: '鏂规涓�',
+ type: 'line',
+ smooth: true,
+ data: [1.0, 0.7, 0.45, 0.44, 0.38, 0.38, 0.15, 0.08, 0.08, 0.02, 0.02, 0.01, 0.01, 0.1, 0.0]
+ }
+ ]
+ };
+ this.myChart = echart.init(document.getElementById("myChart"));
+ console.log(this.option, ' this.option ')
+ this.myChart.setOption(this.option);
+ //闅忕潃灞忓箷澶у皬璋冭妭鍥捐〃
+ window.addEventListener("resize", () => {
+ this.myChart.resize();
+ });
+ }
+ }
+ }
+</script>
+<style>
+
+</style>
--
Gitblit v1.9.1