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