From bcd950216084a6208de0c636f9430e47601acc01 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期五, 26 七月 2024 08:30:23 +0800
Subject: [PATCH] 修改

---
 web/src/router.js                                                                                                   |    8 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/SimulaDataDto.java                  |   12 +
 web/src/views/modules/taskReliability/SimulatHistory.vue                                                            |  126 ++++++++++++
 web/packages/views/modules/sys/menu-add-or-update.vue                                                               |    6 
 web/src/views/modules/taskReliability/TimeDiagram.vue                                                               |  126 ++++++++++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java               |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java       |   13 +
 zt/core/src/main/java/com/zt/modules/sys/model/SysMenu.java                                                         |    1 
 web/packages/views/modules/sys/menu.vue                                                                             |    1 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java |   97 ++++++++-
 modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml                                     |   24 +-
 web/src/views/modules/taskReliability/SimulatAssess.vue                                                             |   20 +
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/CurveParam.java                   |   28 ++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java                |   17 -
 web/src/views/modules/taskReliability/SimulatCurve.vue                                                              |  103 +++++++--
 15 files changed, 515 insertions(+), 71 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
index fa81fd7..eafb8b7 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
@@ -1,6 +1,7 @@
 package com.zt.life.modules.mainPart.taskReliability.controller;
 
 
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.XML;
 import com.zt.common.annotation.LogOperation;
@@ -9,14 +10,17 @@
 import com.zt.common.db.query.QueryFilter;
 import com.zt.common.servlet.Result;
 import com.zt.common.servlet.PageResult;
-import com.zt.common.utils.JsonUtils;
 import com.zt.common.validator.AssertUtils;
 import com.zt.common.validator.ValidatorUtils;
 import com.zt.common.validator.group.DefaultGroup;
 import com.zt.common.validator.group.UpdateGroup;
 import com.zt.life.modules.mainPart.async.PythonLib;
+import com.zt.life.modules.mainPart.taskReliability.dto.SimulaDataDto;
+import com.zt.life.modules.mainPart.taskReliability.model.CurveParam;
 import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
+import com.zt.life.modules.mainPart.taskReliability.model.Task;
 import com.zt.life.modules.mainPart.taskReliability.service.SimulatAssessService;
+import com.zt.life.modules.mainPart.taskReliability.service.TaskService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -30,8 +34,11 @@
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
@@ -53,13 +60,18 @@
     @Autowired
     private PythonLib pythonLib;
 
+    @Autowired
+    private TaskService taskService;
+
     @Value("${data.reliaSimLib.resultHome}")
     private String path;
 
     @Autowired
     private SimulatAssessService simulatAssessService;
 
-    @GetMapping("page")
+    private JSONObject xmlJSONObj;
+
+   /* @GetMapping("page")
     @ApiOperation("鍒嗛〉")
     @ApiImplicitParams({
             @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
@@ -70,12 +82,20 @@
     public PageResult<SimulatAssess> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
 
         return PageResult.ok(simulatAssessService.page(queryFilter));
-    }
+    }*/
 
     @GetMapping("{id}")
     @ApiOperation("淇℃伅")
     public Result<SimulatAssess> get(@PathVariable("id") Long id) {
         SimulatAssess data = simulatAssessService.get(id);
+
+        return Result.ok(data);
+    }
+
+    @GetMapping("getSimulatList")
+    @ApiOperation("淇℃伅")
+    public Result<List<SimulatAssess>> getSimulatList(Long productId,Long taskModelId) {
+        List<SimulatAssess> data = simulatAssessService.getList(productId,taskModelId);
 
         return Result.ok(data);
     }
@@ -100,27 +120,82 @@
         return result;
     }
 
-    @GetMapping("getResultXML")
-    public Result getResultXML(Long taskId) {
-        String filePath = path + "/"+taskId+"/"+"result.xml";
-        InputStream in = JsonUtils.class.getResourceAsStream(filePath);
+    @PostMapping("getResultXML")
+    public Result<SimulaDataDto> getResultXML(@RequestBody SimulatAssess simulatAssess) {
+        if (simulatAssess.getDataType().equals("fz")){
+            Integer num = simulatAssessService.getNumById(simulatAssess.getProductId(),simulatAssess.getTaskModelId());
+            simulatAssess.setName("浠跨湡璁板綍" + (num+1));
+            simulatAssessService.insert(simulatAssess);
+        }
+        String filePath = path + "/" + simulatAssess.getId() + "/" + "result.xml";
         String xml = null;
         try {
+            InputStream in = new FileInputStream(filePath);
             xml = IOUtils.toString(in);
         } catch (IOException e) {
             e.printStackTrace();
         }
-        JSONObject xmlJSONObj = XML.toJSONObject(xml);
+        xmlJSONObj = XML.toJSONObject(xml);
+        simulatAssess.setShowProductId(simulatAssess.getProductId());
+        SimulaDataDto data = this.getResultData(simulatAssess);
+        return Result.ok(data);
+    }
 
+    @PostMapping("getResultData")
+    public Result<SimulaDataDto> getData(@RequestBody SimulatAssess simulatAssess) {
+        SimulaDataDto data = this.getResultData(simulatAssess);
+        return Result.ok(data);
+    }
 
-        return Result.ok();
+    public SimulaDataDto getResultData(SimulatAssess simulatAssess) {
+        SimulaDataDto data = new SimulaDataDto();
+        CurveParam param = new CurveParam();
+        Double samplPeriod = simulatAssess.getSamplPeriod().doubleValue();
+        Task task = taskService.get(simulatAssess.getTaskModelId());
+        samplPeriod = samplPeriod / 60;
+        List<Double> xList = new ArrayList<>();
+        for (Double i = 0.0; i + samplPeriod <= task.getTaskDuration(); i += samplPeriod) {
+            xList.add(i);
+        }
+        param.setXData(xList);
+        JSONArray jsonArray = xmlJSONObj.getJSONObject("ResultNodes").getJSONArray("ResultNode");
+        for (int i = 0; i < jsonArray.size(); i++) {
+            Long productId = null;
+            Object nameValue = jsonArray.getJSONObject(i).get("name");
+            if (nameValue instanceof Long) {
+                productId = (Long) nameValue;
+                if (productId.equals(simulatAssess.getShowProductId())) {
+                    JSONArray jsonArray2 = jsonArray.getJSONObject(i).getJSONArray("phase");
+                    List<Double> doubleArray = new ArrayList<>();
+                    String availability = null;
+                    for (int j = 0; j < jsonArray2.size(); j++) {
+                        if (availability != null) {
+                            availability = availability + " " + jsonArray2.getJSONObject(j).get("availability");
+                        } else {
+                            availability = (String) jsonArray2.getJSONObject(j).get("availability");
+                        }
+                    }
+                    String[] arr = availability.split(" ");
+                    // 閬嶅巻瀛愬瓧绗︿覆鏁扮粍锛屽皢姣忎釜鍏冪礌杞崲涓篸ouble骞跺瓨鍌ㄥ埌double鏁扮粍涓�
+                    for (int a = 0; a < arr.length; a++) {
+                        doubleArray.add(Double.parseDouble(arr[a]));
+                    }
+                    param.setYData(doubleArray);
+                    data.setMtbf((Double) jsonArray.getJSONObject(i).get("mttf"));
+                    data.setMttr((Double) jsonArray.getJSONObject(i).get("mttr"));
+                }
+                data.setCurveParam(param);
+            }
+        }
+
+        return data;
     }
 
     @GetMapping("getCalcProgress")
     public Result getCalcProgress(Long taskId) {
         String key = taskId.toString() + taskTypeProgress;
-        String progress = (String)redisTemplate.opsForValue().get(key);
-        if (progress==null) progress = "0";
+        String progress = (String) redisTemplate.opsForValue().get(key);
+        if (progress == null) progress = "0";
         return Result.ok(progress);
     }
 
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java
index 0e38413..b986334 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java
@@ -18,6 +18,8 @@
 @Mapper
 public interface SimulatAssessDao extends BaseDao<SimulatAssess> {
 
-    List<SimulatAssess> getList(Map<String, Object> params);
+    List<SimulatAssess> getList(Long productId, Long taskModelId);
 
+
+    Integer getNumById(Long productId, Long taskModelId);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/SimulaDataDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/SimulaDataDto.java
new file mode 100644
index 0000000..1ba01eb
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/SimulaDataDto.java
@@ -0,0 +1,12 @@
+package com.zt.life.modules.mainPart.taskReliability.dto;
+
+import com.zt.life.modules.mainPart.taskReliability.model.CurveParam;
+import lombok.Data;
+
+@Data
+public class SimulaDataDto {
+    private Double Mttr;
+    private Double Mtbf;
+    private Long productId;
+    private CurveParam curveParam;
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/CurveParam.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/CurveParam.java
new file mode 100644
index 0000000..7e87b23
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/CurveParam.java
@@ -0,0 +1,28 @@
+package com.zt.life.modules.mainPart.taskReliability.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * operat_condit
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-03-29
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class CurveParam extends BusiEntity {
+	@ApiModelProperty(value = "X鍧愭爣鏁版嵁")
+	private List<Double> xData;
+
+	@ApiModelProperty(value = "Y鍧愭爣鏁版嵁")
+	private List<Double> yData;
+
+	@ApiModelProperty(value = "X鍧愭爣闂撮殧")
+	private Integer xInterval;
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java
index f93e4b9..780f12d 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java
@@ -31,27 +31,20 @@
 	@ApiModelProperty(value = "鎬讳綋浠诲姟妯″瀷ID")
 	private Long taskModelId;
 
-	@ApiModelProperty(value = "鏁版嵁绫诲瀷")
-	private Integer dataType;
-
-	@ApiModelProperty(value = "鏄惁鍙慨")
-	private Integer isRepair;
-
 	@ApiModelProperty(value = "閲囨牱鍛ㄦ湡")
 	private Integer samplPeriod;
 
 	@ApiModelProperty(value = "浠跨湡娆℃暟")
 	private Integer simulatFrequency;
 
-	@ApiModelProperty(value = "")
-	private Integer status;
+	@TableField(exist = false)
+	private Long showProductId;
 
-	private String code;
-
-	private String errorMsg;
-	private String curveData;
+	@TableField(exist = false)
+	private String dataType;
 
 	@ApiModelProperty(value = "浼犵粰绠楁硶搴撶殑xml")
 	private String xml;
 
+	private String name;
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
index 5d180b2..9f7995f 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
@@ -5,7 +5,7 @@
 import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
 import org.springframework.stereotype.Service;
 import com.zt.common.db.query.QueryFilter;
-import javax.annotation.Resource;
+
 import java.util.List;
 
 
@@ -24,9 +24,9 @@
      * @param queryFilter
      * @return
      */
-    public List<SimulatAssess> page(QueryFilter queryFilter) {
+   /* public List<SimulatAssess> page(QueryFilter queryFilter) {
         return baseDao.getList(queryFilter.getQueryParams());
-    }
+    }*/
 
     /**
      * 鍒犻櫎
@@ -37,4 +37,11 @@
         super.deleteLogic(ids);
     }
 
+    public Integer getNumById(Long productId, Long taskModelId) {
+        return baseDao.getNumById(productId,taskModelId);
+    }
+
+    public List<SimulatAssess> getList(Long productId, Long taskModelId) {
+        return baseDao.getList(productId,taskModelId);
+    }
 }
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
index 06f1274..e0091ac 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
@@ -4,17 +4,19 @@
 <mapper namespace="com.zt.life.modules.mainPart.taskReliability.dao.SimulatAssessDao">
 
     <select id="getList" resultType="com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess">
-        select a.*
-        from simulat_assess a
-        <where>
-            a.is_delete = 0
-            <if test="whereSql!=null">
-                and ${whereSql}
-            </if>
-        </where>
-        <if test="orderBySql!=null">
-            ORDER BY ${orderBySql}
-        </if>
+        select *
+        from simulat_assess
+        where product_id = ${productId}
+          and task_model_id = ${taskModelId}
+          and IS_DELETE = 0
+        order by name desc
+    </select>
+    <select id="getNumById" resultType="java.lang.Integer">
+        select COUNT(*)
+        from simulat_assess
+        where product_id = ${productId}
+          and task_model_id = ${taskModelId}
+          and IS_DELETE = 0
     </select>
 
 </mapper>
diff --git a/web/packages/views/modules/sys/menu-add-or-update.vue b/web/packages/views/modules/sys/menu-add-or-update.vue
index c538281..49efdaa 100644
--- a/web/packages/views/modules/sys/menu-add-or-update.vue
+++ b/web/packages/views/modules/sys/menu-add-or-update.vue
@@ -27,6 +27,12 @@
           <el-radio :label="0">鍚�</el-radio>
         </el-radio-group>
       </zt-form-item>
+      <zt-form-item label="鏄惁鍒锋柊" prop="isRefresh">
+        <el-radio-group v-model="dataForm.isRefresh">
+          <el-radio :label="0">鏄�</el-radio>
+          <el-radio :label="1">鍚�</el-radio>
+        </el-radio-group>
+      </zt-form-item>
       <el-form-item prop="params" label="鑿滃崟鍙傛暟">
         <el-input v-model="dataForm.params"></el-input>
       </el-form-item>
diff --git a/web/packages/views/modules/sys/menu.vue b/web/packages/views/modules/sys/menu.vue
index a7fb48f..59b7380 100644
--- a/web/packages/views/modules/sys/menu.vue
+++ b/web/packages/views/modules/sys/menu.vue
@@ -24,6 +24,7 @@
                                     prop="type"/>
               <el-table-column :label="$t('menu.sort')" align="center" min-width="60" prop="sort"/>
               <el-table-column align="center" label="鏄剧ず" min-width="60" prop="showMenu"/>
+              <el-table-column align="center" label="涓嶅埛鏂�" min-width="60" prop="isRefresh"/>
               <el-table-column :label="$t('menu.url')" :show-overflow-tooltip="true" prop="url" width="400"/>
               <el-table-column :label="$t('menu.permissions')" :show-overflow-tooltip="true" prop="permissions"
                                width="150"/>
diff --git a/web/src/router.js b/web/src/router.js
index 168f0eb..f2d2e63 100644
--- a/web/src/router.js
+++ b/web/src/router.js
@@ -57,7 +57,13 @@
       component: () => import('./views/modules/sys/task/taskCenter'),
       name: 'home',
       meta: {title: '棣栭〉', isTab: true}
-    }
+    },
+    {
+      path: '/home',
+      component: () => import('./views/modules/home2'),
+      name: 'home',
+      meta: {title: '棣栭〉',isRefresh: 1, isTab: true}
+    },
   ]
 }
 
diff --git a/web/src/views/modules/taskReliability/SimulatAssess.vue b/web/src/views/modules/taskReliability/SimulatAssess.vue
index 55d2a39..5eb45bd 100644
--- a/web/src/views/modules/taskReliability/SimulatAssess.vue
+++ b/web/src/views/modules/taskReliability/SimulatAssess.vue
@@ -27,15 +27,13 @@
         <div>
           <el-col :span="4">
             <div style="margin-right: 5px;height: calc(88vh - 100px)" v-if="isSelect">
-              <product-model-tree :isShow="false"></product-model-tree>
+              <product-model-tree @on-selected="onTreeSelected" showXdy="false"
+                                  ref="ProductModelTree" :isShow="false"/>
             </div>
           </el-col>
           <el-col :span="20">
+
             <div style="margin-top: 20px">
-              <div style="margin-left: 400px" v-if="isShow">
-                <el-tag type="info" effect="dark" style="font-size: 20px">MTBF:{{MTBF}}</el-tag>
-                <el-tag type="info" effect="dark" style="margin-left: 50px;font-size: 20px">MTTR:{{MTTR}}</el-tag>
-              </div>
               <div>
                 <SimulatCurve ref="SimulatCurve"></SimulatCurve>
               </div>
@@ -68,9 +66,9 @@
           id: '',
           pid: '',
           productId: '',
+          showProductId: '',
           taskModelId: '',
-          dataType: '',
-          isRepair: '',
+          dataType: 'fz',
           samplPeriod: '',
           simulatFrequency: '',
           simulatTime: ''
@@ -83,7 +81,7 @@
     watch: {
       percentage() {
         if (this.percentage === 100) {
-          this.$refs.SimulatCurve.initEcharts(this.dataForm.id,this.dataForm.taskModelId, this.dataForm.samplPeriod);
+          this.$refs.SimulatCurve.initEcharts(this.dataForm);
         }
       }
     },
@@ -94,6 +92,11 @@
     },
 
     methods: {
+      onTreeSelected(data) {
+        console.log(data, 'onProductSelected')
+        this.dataForm.showProductId = data.id
+        this.$refs.SimulatCurve.getProductEcharts(this.dataForm);
+      },
       // 鑾峰彇淇℃伅
       onProductSelected(data) {
         this.isSelect = true
@@ -131,6 +134,7 @@
           )
         } else {
           clearInterval(this.timers)
+          this.percentage = 0
         }
       },
       async analyze() {
diff --git a/web/src/views/modules/taskReliability/SimulatCurve.vue b/web/src/views/modules/taskReliability/SimulatCurve.vue
index b56b0ec..d688c1b 100644
--- a/web/src/views/modules/taskReliability/SimulatCurve.vue
+++ b/web/src/views/modules/taskReliability/SimulatCurve.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="mod-taskReliability-taskPhase">
-    <div class="echart" id="mychart" :style="myChartStyle"></div>
+    <div class="echart" id="myChart" :style="myChartStyle"></div>
   </div>
 </template>
 
 <script>
-  import * as echarts from "echarts";
+  import echart from "echarts";
 
   export default {
     name: 'SimulatCurve',
@@ -13,6 +13,8 @@
       return {
         xDataList: [],
         yDataList: [],
+        mttr: '',
+        mtbf: '',
         myChart: {},
         myChartStyle: {float: "left", width: "100%", height: "600px"}, //鍥捐〃鏍峰紡
         option: {}
@@ -20,48 +22,101 @@
     },
     components: {},
     methods: {
-      initEcharts(id,taskId, samplPeriod) {
+      async initEcharts(Param) {
+        let res = await this.$http.post(`/taskReliability/SimulatAssess/getResultXML`, Param)
+        console.log(res.data)
+        if (res.data) {
+          this.yDataList = res.data.curveParam.ydata
+          this.xDataList = res.data.curveParam.xdata
+          this.mttr = res.data.mttr.toFixed(4)
+          this.mtbf = res.data.mtbf.toFixed(4)
+        }
         this.option = {
           title: {
-            text: '',
+            text: "mttr:" + this.mttr + "    mtbf:" + this.mtbf,
             textStyle: { // 涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder","color": "#333"}
               fontFamily: 'Arial',
-              fontSize: 20,
+              fontSize: 30,
               fontStyle: 'normal',
               fontWeight: 'normal',
-            }
+            },
+            textAlign:'auto',//鏁翠綋锛堝寘鎷� text 鍜� subtext锛夌殑姘村钩瀵归綈
+            textVerticalAlign:'auto',//鏁翠綋锛堝寘鎷� text 鍜� subtext锛夌殑鍨傜洿瀵归綈
+            padding:0,//[5,10] | [ 5,6, 7, 8] ,鏍囬鍐呰竟璺�
+            left:'center',//'5' | '5%'锛宼itle 缁勪欢绂诲鍣ㄥ乏渚х殑璺濈
+            right:'auto',//'title 缁勪欢绂诲鍣ㄥ彸渚х殑璺濈
+            top:'auto',//title 缁勪欢绂诲鍣ㄤ笂渚х殑璺濈
+            bottom:'auto',//title 缁勪欢绂诲鍣ㄤ笅渚х殑璺濈
           },
           xAxis: {
-            data: [],
+            data: this.xDataList,
             name: '浠跨湡娆℃暟'
           },
-          yAxis: {},
+          yAxis: {
+
+            name: '',
+          },
           series: [
             {
-              data: [],
+              data: this.yDataList,
               type: 'line',
               smooth: true
             }
           ]
         };
-        this.getEchart(id,taskId, samplPeriod)
+        this.myChart = echart.init(document.getElementById("myChart"));
+        console.log(this.option, ' this.option ')
+        this.myChart.setOption(this.option);
+        //闅忕潃灞忓箷澶у皬璋冭妭鍥捐〃
+        window.addEventListener("resize", () => {
+          this.myChart.resize();
+        });
       },
-      async getEchart(id,taskId, samplPeriod) {
-        let task = await this.$http.get(`/taskReliability/Task/${taskId}`)
-        samplPeriod = samplPeriod / 60
-        let i = 0
-        for (i = 0; i + samplPeriod <= task.taskDuration; i += samplPeriod) {
-          this.series[0].data.push(i);
+      async getProductEcharts(Param) {
+        let res = await this.$http.post(`/taskReliability/SimulatAssess/getResultData`, Param)
+        console.log(res.data)
+        if (res.data) {
+          this.yDataList = res.data.curveParam.ydata
+          this.xDataList = res.data.curveParam.xdata
+          this.mttr = res.data.mttr.toFixed(4)
+          this.mtbf = res.data.mtbf.toFixed(4)
         }
-        if (i !== task.taskDuration) {
-          this.series[0].data.push(task.taskDuration);
-        }
+        this.option = {
+          title: {
+            text: "mttr:" + this.mttr + "    mtbf:" + this.mtbf,
+            textStyle: { // 涓绘爣棰樻枃鏈牱寮弡"fontSize": 18,"fontWeight": "bolder","color": "#333"}
+              fontFamily: 'Arial',
+              fontSize: 30,
+              fontStyle: 'normal',
+              fontWeight: 'normal',
+            },
+            textAlign: 'auto',//鏁翠綋锛堝寘鎷� text 鍜� subtext锛夌殑姘村钩瀵归綈
+            textVerticalAlign: 'auto',//鏁翠綋锛堝寘鎷� text 鍜� subtext锛夌殑鍨傜洿瀵归綈
+            padding: 0,//[5,10] | [ 5,6, 7, 8] ,鏍囬鍐呰竟璺�
+            left: 'center',//'5' | '5%'锛宼itle 缁勪欢绂诲鍣ㄥ乏渚х殑璺濈
+            right: 'auto',//'title 缁勪欢绂诲鍣ㄥ彸渚х殑璺濈
+            top: 'auto',//title 缁勪欢绂诲鍣ㄤ笂渚х殑璺濈
+            bottom: 'auto',//title 缁勪欢绂诲鍣ㄤ笅渚х殑璺濈
+          },
+          xAxis: {
+            data: this.xDataList,
+            name: '浠跨湡鎬绘椂闀�',
+            splitNumber: 10
+          },
+          yAxis: {
 
-        let res = await this.$http.get(`/taskReliability/SimulatAssess/${id}`)
-
-
-
-        this.myChart = echarts.init(document.getElementById("mychart"));
+            name: '',
+          },
+          series: [
+            {
+              data: this.yDataList,
+              type: 'line',
+              smooth: true
+            }
+          ]
+        };
+        this.myChart = echart.init(document.getElementById("myChart"));
+        console.log(this.option, ' this.option ')
         this.myChart.setOption(this.option);
         //闅忕潃灞忓箷澶у皬璋冭妭鍥捐〃
         window.addEventListener("resize", () => {
diff --git a/web/src/views/modules/taskReliability/SimulatHistory.vue b/web/src/views/modules/taskReliability/SimulatHistory.vue
new file mode 100644
index 0000000..1c1456e
--- /dev/null
+++ b/web/src/views/modules/taskReliability/SimulatHistory.vue
@@ -0,0 +1,126 @@
+<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" label-width="80px">
+          <zt-form-item label="浜у搧鑺傜偣" prop="productId">
+            <zt-select v-model="dataForm.productId" :datas="productList" @change="onProductSelected"/>
+          </zt-form-item>
+          <zt-form-item label="鎬讳綋浠诲姟" prop="taskModelId">
+            <zt-select v-model="dataForm.taskModelId" :datas="taskList" @change="onTaskSelected"/>
+          </zt-form-item>
+          <zt-form-item label="浠跨湡璁板綍" prop="simulatHis">
+            <zt-select v-model="dataForm.id" :datas="simulatList" @change="onSimulatSelected"/>
+          </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"/>
+            </div>
+          </el-col>
+          <el-col :span="20">
+            <div style="margin-top: 20px">
+              <div>
+                <SimulatCurve ref="SimulatCurve"></SimulatCurve>
+              </div>
+            </div>
+          </el-col>
+        </div>
+      </div>
+    </el-row>
+  </div>
+</template>
+
+<script>
+  import SimulatCurve from "./SimulatCurve";
+  import SimulatData from "./SimulatData";
+  import ProductModelTree from "../basicInfo/ProductModelTree";
+
+
+  export default {
+    data() {
+      return {
+        timers: '',
+        isSelect: false,
+        isShow: false,
+        productList: [],
+        simulatList: [],
+        taskList: [],
+        MTBF: '',
+        MTTR: '',
+        dataForm: {
+          id: '',
+          pid: '',
+          productId: '',
+          showProductId: '',
+          taskModelId: '',
+          dataType: 'his',
+          samplPeriod: '',
+          simulatFrequency: '',
+          simulatTime: ''
+        }
+      }
+    },
+    mounted() {
+      this.getProductList()
+    },
+    components: {
+      ProductModelTree,
+      SimulatCurve,
+      SimulatData
+    },
+
+    methods: {
+      async getProductList() {
+        let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
+        this.productList = res.data
+      },
+      async getTaskList() {
+        let params = {
+          productId: this.dataForm.productId
+        }
+        let res = await this.$http.get('/taskReliability/Task/getTaskList', {params: params})
+        console.log(res.data)
+        this.taskList = res.data
+      },
+      async getSimulatList() {
+        let params = {
+          productId: this.dataForm.productId,
+          taskModelId: this.dataForm.taskModelId
+        }
+        let res = await this.$http.get('/taskReliability/SimulatAssess/getSimulatList', {params: params})
+        console.log(res.data)
+        this.simulatList = res.data
+      },
+      onTreeSelected(data) {
+        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.getTaskList()
+        this.dataForm.taskModelId = ''
+      },
+      onTaskSelected(data) {
+        console.log(data, ' onProductSelected(data)')
+        this.dataForm.taskModelId = data.id
+        this.getSimulatList()
+        this.dataForm.id = ''
+      },
+      onSimulatSelected(data) {
+        this.dataForm.id = data.id
+        this.dataForm.samplPeriod = data.samplPeriod
+        this.$refs.SimulatCurve.initEcharts(this.dataForm);
+      },
+    }
+  }
+</script>
+<style>
+
+</style>
diff --git a/web/src/views/modules/taskReliability/TimeDiagram.vue b/web/src/views/modules/taskReliability/TimeDiagram.vue
new file mode 100644
index 0000000..1c1456e
--- /dev/null
+++ b/web/src/views/modules/taskReliability/TimeDiagram.vue
@@ -0,0 +1,126 @@
+<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" label-width="80px">
+          <zt-form-item label="浜у搧鑺傜偣" prop="productId">
+            <zt-select v-model="dataForm.productId" :datas="productList" @change="onProductSelected"/>
+          </zt-form-item>
+          <zt-form-item label="鎬讳綋浠诲姟" prop="taskModelId">
+            <zt-select v-model="dataForm.taskModelId" :datas="taskList" @change="onTaskSelected"/>
+          </zt-form-item>
+          <zt-form-item label="浠跨湡璁板綍" prop="simulatHis">
+            <zt-select v-model="dataForm.id" :datas="simulatList" @change="onSimulatSelected"/>
+          </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"/>
+            </div>
+          </el-col>
+          <el-col :span="20">
+            <div style="margin-top: 20px">
+              <div>
+                <SimulatCurve ref="SimulatCurve"></SimulatCurve>
+              </div>
+            </div>
+          </el-col>
+        </div>
+      </div>
+    </el-row>
+  </div>
+</template>
+
+<script>
+  import SimulatCurve from "./SimulatCurve";
+  import SimulatData from "./SimulatData";
+  import ProductModelTree from "../basicInfo/ProductModelTree";
+
+
+  export default {
+    data() {
+      return {
+        timers: '',
+        isSelect: false,
+        isShow: false,
+        productList: [],
+        simulatList: [],
+        taskList: [],
+        MTBF: '',
+        MTTR: '',
+        dataForm: {
+          id: '',
+          pid: '',
+          productId: '',
+          showProductId: '',
+          taskModelId: '',
+          dataType: 'his',
+          samplPeriod: '',
+          simulatFrequency: '',
+          simulatTime: ''
+        }
+      }
+    },
+    mounted() {
+      this.getProductList()
+    },
+    components: {
+      ProductModelTree,
+      SimulatCurve,
+      SimulatData
+    },
+
+    methods: {
+      async getProductList() {
+        let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
+        this.productList = res.data
+      },
+      async getTaskList() {
+        let params = {
+          productId: this.dataForm.productId
+        }
+        let res = await this.$http.get('/taskReliability/Task/getTaskList', {params: params})
+        console.log(res.data)
+        this.taskList = res.data
+      },
+      async getSimulatList() {
+        let params = {
+          productId: this.dataForm.productId,
+          taskModelId: this.dataForm.taskModelId
+        }
+        let res = await this.$http.get('/taskReliability/SimulatAssess/getSimulatList', {params: params})
+        console.log(res.data)
+        this.simulatList = res.data
+      },
+      onTreeSelected(data) {
+        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.getTaskList()
+        this.dataForm.taskModelId = ''
+      },
+      onTaskSelected(data) {
+        console.log(data, ' onProductSelected(data)')
+        this.dataForm.taskModelId = data.id
+        this.getSimulatList()
+        this.dataForm.id = ''
+      },
+      onSimulatSelected(data) {
+        this.dataForm.id = data.id
+        this.dataForm.samplPeriod = data.samplPeriod
+        this.$refs.SimulatCurve.initEcharts(this.dataForm);
+      },
+    }
+  }
+</script>
+<style>
+
+</style>
diff --git a/zt/core/src/main/java/com/zt/modules/sys/model/SysMenu.java b/zt/core/src/main/java/com/zt/modules/sys/model/SysMenu.java
index 569d78e..7cad02a 100644
--- a/zt/core/src/main/java/com/zt/modules/sys/model/SysMenu.java
+++ b/zt/core/src/main/java/com/zt/modules/sys/model/SysMenu.java
@@ -41,6 +41,7 @@
 	@NotNull(message="涓婄骇ID锛屼笉鑳戒负绌�", groups = DefaultGroup.class)
 	private Long pid;
 
+
 	@ApiModelProperty(value = "鑿滃崟鍚嶇О")
 	@NotBlank(message="鑿滃崟鍚嶇О涓嶈兘涓虹┖", groups = DefaultGroup.class)
 	private String name;

--
Gitblit v1.9.1