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