From 85e8c7af0a03795490e1bba458018fe9e90499f8 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期一, 28 十月 2024 13:08:14 +0800
Subject: [PATCH] 新增可靠性仿真评估算法库进程管理功能
---
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 21 ++
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/ProcessUtils.java | 78 +++++++++++
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/Kernel32.java | 9 +
modules/mainPart/pom.xml | 5
web/src/views/modules/taskReliability/Process.vue | 87 ++++++++++++
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java | 97 ++++++++++++-
modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml | 11 +
web/src/views/modules/taskReliability/SchemeCompar.vue | 35 ++--
web/src/views/modules/taskReliability/SimulatAssess.vue | 48 ++++--
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java | 2
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java | 24 ++
11 files changed, 370 insertions(+), 47 deletions(-)
diff --git a/modules/mainPart/pom.xml b/modules/mainPart/pom.xml
index 19f2f48..98ed760 100644
--- a/modules/mainPart/pom.xml
+++ b/modules/mainPart/pom.xml
@@ -47,6 +47,11 @@
<artifactId>batik-all</artifactId>
<version>1.16</version>
</dependency>
+ <dependency>
+ <groupId>net.java.dev.jna</groupId>
+ <artifactId>jna</artifactId>
+ <version>4.1.0</version>
+ </dependency>
</dependencies>
<!-- pom.xml -->
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 ee2d484..f0cc214 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
@@ -6,6 +6,11 @@
import cn.hutool.json.XML;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zt.common.annotation.LogOperation;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.constant.Constant;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.exception.RenException;
+import com.zt.common.servlet.PageResult;
import com.zt.common.servlet.Result;
import com.zt.common.validator.AssertUtils;
import com.zt.common.validator.ValidatorUtils;
@@ -16,7 +21,10 @@
import com.zt.life.modules.mainPart.taskReliability.model.*;
import com.zt.life.modules.mainPart.taskReliability.service.SimulatAssessService;
import com.zt.life.modules.mainPart.taskReliability.service.TaskService;
+import com.zt.life.modules.mainPart.utils.OSUtils.ProcessUtils;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -26,6 +34,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import java.io.File;
import java.io.FileInputStream;
@@ -95,8 +104,21 @@
if (result2)
return Result.ok();
else
- return Result.error();
+ return Result.error("绠楁硶搴撹绠楀け璐ワ紒");
}
+
+ @GetMapping("process")
+ @ApiOperation("鑾峰彇绠楁硶搴撹繘绋嬩俊鎭�")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+ @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+ @ApiImplicitParam(name = "isAlive", value = "瀛樻椿", dataType = Constant.QT.Boolean),
+ })
+ public PageResult<SimulatAssess> process(@ApiIgnore @QueryParam QueryFilter queryFilter) {
+ List<SimulatAssess> page = simulatAssessService.process(queryFilter);
+ return PageResult.ok(page);
+ }
+
@PostMapping("getResultXML")
public Result<SimulaDataDto> getResultXML(@RequestBody SimulatAssess simulatAssess) {
@@ -146,26 +168,77 @@
String progress2 = "";
String key = null;
if (taskList.length == 1) {
- key = taskList[0].toString() + simulatAssessService.RELIA_SIM_TASK_TYPE_PROGRESS;
+ Long taskId = taskList[0];
+ SimulatAssess simulatAssess = simulatAssessService.get(taskId);
+ boolean isProcessAlive = ProcessUtils.isProcessAlive(simulatAssess.getPid());
+ key = taskId.toString() + simulatAssessService.RELIA_SIM_TASK_TYPE_PROGRESS;
progress2 = (String) redisTemplate.opsForValue().get(key);
+ if (progress2 == null) progress2 = "0";
progress = Integer.parseInt(progress2);
if (progress == null) progress = 0;
+ updateSimulateAssess(simulatAssess, isProcessAlive, progress);
+ if (progress < 100 && !isProcessAlive) {
+ logger.error("绠楁硶搴撹繘绋嬪湪璁$畻閫斾腑寮傚父缁堟浜嗭細taskId="+taskId+" pid="+simulatAssess.getPid()+" progress="+progress);
+ simulatAssessService.deleteSimInfoInRedis(taskId);
+ return Result.error("绠楁硶搴撹繘绋嬪湪璁$畻閫斾腑寮傚父缁堟浜嗭紒");
+ }
if (progress == 100) {
- //simulatAssessService.deleteSimInfoInRedis(taskId);
+ try {
+ Thread.sleep(1000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ isProcessAlive = ProcessUtils.isProcessAlive(simulatAssess.getPid());
+ simulatAssess.setProcessIsAlive(isProcessAlive);
+ simulatAssessService.update(simulatAssess);
+// simulatAssessService.deleteSimInfoInRedis(taskId);
}
} else {
for (Long taskId : taskList) {
+ int progTmp = 0;
+ SimulatAssess simulatAssess = simulatAssessService.get(taskId);
+ boolean isProcessAlive = ProcessUtils.isProcessAlive(simulatAssess.getPid());
key = taskId.toString() + simulatAssessService.RELIA_SIM_TASK_TYPE_PROGRESS;
progress2 = (String) redisTemplate.opsForValue().get(key);
- progress = progress + Integer.parseInt(progress2);
+ if (progress2 == null) progress2 = "0";
+ progTmp = Integer.parseInt(progress2);
+ updateSimulateAssess(simulatAssess, isProcessAlive, progTmp);
+ if (progTmp < 100 && !isProcessAlive) {
+ logger.error("绠楁硶搴撹繘绋嬪湪璁$畻閫斾腑寮傚父缁堟浜嗭細taskId="+taskId+" pid="+simulatAssess.getPid()+" progress="+progTmp);
+// simulatAssessService.deleteSimInfoInRedis(taskId);
+ return Result.error("绠楁硶搴撹繘绋嬪湪璁$畻閫斾腑寮傚父缁堟浜嗭紒");
+ }
+ if (progTmp == 100) {
+ try {
+ Thread.sleep(500);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ isProcessAlive = ProcessUtils.isProcessAlive(simulatAssess.getPid());
+ simulatAssess.setProcessIsAlive(isProcessAlive);
+ simulatAssessService.update(simulatAssess);
+// simulatAssessService.deleteSimInfoInRedis(taskId);
+ }
+ progress = progress + progTmp;
}
progress = progress / taskList.length;
- if (progress == 100) {
- //simulatAssessService.deleteSimInfoInRedis(taskId);
- }
}
return Result.ok(progress.toString());
+ }
+
+ private void updateSimulateAssess(SimulatAssess simulatAssess, boolean isProcessAlive, int progress) {
+ if (!isProcessAlive) {
+ simulatAssess.setProcessIsAlive(false);
+ simulatAssess.setProgress(progress);
+ simulatAssess.setProcessEndTime(new Date());
+ simulatAssessService.update(simulatAssess);
+ } else {
+ if (simulatAssess.getProgress() != progress) {
+ simulatAssess.setProgress(progress);
+ simulatAssessService.update(simulatAssess);
+ }
+ }
}
@GetMapping("ReliabilityWeakness")
@@ -186,6 +259,16 @@
return Result.ok(data);
}
+ @GetMapping("killProcess")
+ public Result<SchemeComparDto> killProcess(@RequestParam("taskId") Long taskId) {
+ SimulatAssess simulatAssess = simulatAssessService.get(taskId);
+ ProcessUtils.killProcess(simulatAssess.getPid());
+ boolean isProcessAlive = ProcessUtils.isProcessAlive(simulatAssess.getPid());
+ simulatAssess.setProcessIsAlive(isProcessAlive);
+ simulatAssessService.update(simulatAssess);
+ return Result.ok();
+ }
+
@PutMapping
@ApiOperation("淇敼")
@LogOperation("淇敼")
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 eb69acb..5fd96a5 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
@@ -47,4 +47,6 @@
List<verifyDto> getNode(Long modelId);
Integer getVoteNum(Long id);
+
+ List<SimulatAssess> getProcessList(Map<String, Object> params);
}
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 061828e..730e7c9 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
@@ -2,9 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.zt.common.constant.Bool;
import com.zt.common.entity.BusiEntity;
-import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -23,9 +21,11 @@
public class SimulatAssess extends BusiEntity {
private static final long serialVersionUID = 1L;
-
@ApiModelProperty(value = "浜у搧鑺傜偣ID")
private Long productId;
+
+ @ApiModelProperty(value = "鍚嶇О")
+ private String name;
@ApiModelProperty(value = "鎬讳綋浠诲姟妯″瀷ID")
private Long taskModelId;
@@ -51,5 +51,21 @@
@ApiModelProperty(value = "浼犵粰绠楁硶搴撶殑xml")
private String xml;
- private String name;
+ @ApiModelProperty(value = "绠楁硶搴撹繘绋婭D")
+ private Long pid;
+
+ @ApiModelProperty(value = "绠楁硶搴撹繘绋嬫槸鍚﹀瓨娲�")
+ private Boolean processIsAlive;
+
+ @ApiModelProperty(value = "鍚姩鍛戒护琛�")
+ private String commandLine;
+
+ @ApiModelProperty(value = "璁$畻杩涘害")
+ private Integer progress;
+
+ @ApiModelProperty(value = "绠楁硶搴撹繘绋嬪惎鍔ㄦ椂闂�")
+ private Date processStartTime;
+
+ @ApiModelProperty(value = "绠楁硶搴撹繘绋嬬粓姝㈡椂闂�")
+ private Date processEndTime;
}
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 0829c56..8f6baca 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,6 +5,7 @@
import cn.hutool.json.XML;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.spire.pdf.tables.table.convert.Convert;
+import com.zt.common.db.query.QueryFilter;
import com.zt.common.exception.RenException;
import com.zt.common.service.BaseService;
import com.zt.common.servlet.Result;
@@ -24,6 +25,7 @@
import com.zt.life.modules.mainPart.taskReliability.dto.TaskPhaseConstraintDto;
import com.zt.life.modules.mainPart.taskReliability.model.*;
import com.zt.life.modules.mainPart.utils.GetStringSpace;
+import com.zt.life.modules.mainPart.utils.OSUtils.ProcessUtils;
import io.swagger.models.auth.In;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -115,7 +117,6 @@
Map<Integer, String> templetsStrMap2 = new HashMap<>();
private JSONObject xmlJSONObj;
-
/**
* 鍒嗛〉鏌ヨ
@@ -655,7 +656,6 @@
return result;
}
- @Transactional(rollbackFor = Exception.class)
public Boolean simulate(SimulatAssess simulatAssess) {
Boolean result = false;
// 2. 缁勮渚涚畻娉曞簱浠跨湡鐨勬ā鍨媥ml
@@ -665,6 +665,11 @@
result = callReliaSimLib(simulatAssess);
return result;
+ }
+
+ public List<SimulatAssess> process(QueryFilter queryFilter) {
+ List<SimulatAssess> page = baseDao.getProcessList(queryFilter.getParams());
+ return queryFilter.getPageList(page);
}
private Boolean callReliaSimLib(SimulatAssess simulatAssess) {
@@ -690,6 +695,8 @@
} else {
throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒");
}
+ long pid = ProcessUtils.getProcessId(process);
+ logger.info("绠楁硶搴揚ID锛�" + pid);
is = process.getInputStream();
// 浠ュ懡浠よ鏂瑰紡璋冪敤绠楁硶搴撴椂锛屾帴鍙g害瀹氳繑鍥炵殑缁撴灉鏄痷tf-8缂栫爜
br = new BufferedReader(new InputStreamReader(is, "utf-8"));
@@ -700,6 +707,8 @@
ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class);
if ("0".equals(rtn.getCode())) {
logger.info("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱鎴愬姛銆�");
+ newProcess(simulatAssess, pid, command);
+ update(simulatAssess);
result = true;
} else {
String errorMsg = rtn.getErrorMsg();
@@ -730,6 +739,14 @@
return result;
}
+ public void newProcess(SimulatAssess simulatAssess, long pid, String command) {
+ simulatAssess.setPid(pid);
+ simulatAssess.setCommandLine(command);
+ simulatAssess.setProcessIsAlive(true);
+ simulatAssess.setProcessStartTime(new Date());
+ simulatAssess.setProgress(0);
+ }
+
private void setParamToRedis(SimulatAssess simulatAssess) {
String key = simulatAssess.getId().toString() + RELIA_SIM_TASK_TYPE_SIMULATION;
logger.info("redis key锛�" + key);
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/Kernel32.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/Kernel32.java
new file mode 100644
index 0000000..f06c109
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/Kernel32.java
@@ -0,0 +1,9 @@
+package com.zt.life.modules.mainPart.utils.OSUtils;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+
+public interface Kernel32 extends Library{
+ public static Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
+ public long GetProcessId(Long hProcess);
+}
\ No newline at end of file
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/ProcessUtils.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/ProcessUtils.java
new file mode 100644
index 0000000..5249d08
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/OSUtils/ProcessUtils.java
@@ -0,0 +1,78 @@
+package com.zt.life.modules.mainPart.utils.OSUtils;
+
+import com.zt.common.exception.RenException;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+public class ProcessUtils {
+ public static long getProcessId(Process process) {
+ long pid = -1;
+ java.lang.reflect.Field field = null;
+ try {
+ if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) {
+ field = process.getClass().getDeclaredField("handle");
+ } else if (System.getProperty("os.name").toLowerCase().indexOf("linux") > -1) {
+ field = process.getClass().getDeclaredField("pid");
+ } else {
+ throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂細鑾峰彇杩涚▼鍙�");
+ }
+ field.setAccessible(true);
+ pid = Kernel32.INSTANCE.GetProcessId((Long)field.get(process));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return pid;
+ }
+
+ public static void killProcess(long pid) {
+ try {
+ Process process = null;
+ if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) {
+ process = Runtime.getRuntime().exec(new String[]{"cmd", "/c", "taskkill /PID "+pid+" /T /F"});
+ } else if (System.getProperty("os.name").toLowerCase().indexOf("linux") > -1) {
+ process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "kill -9 "+pid});
+ } else {
+ throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂細缁堟杩涚▼锛�");
+ }
+ int exitCode = process.waitFor();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static boolean isProcessAlive(long pid) {
+ boolean isAlive = false;
+ try {
+ // 鏍规嵁涓嶅悓鐨勬搷浣滅郴缁燂紝鏋勯�犱笉鍚岀殑鍛戒护
+ String os = System.getProperty("os.name").toLowerCase();
+ String command;
+ if (os.contains("win")) {
+ // Windows 绯荤粺
+ command = "tasklist /FI \"PID eq " + pid + "\"";
+ } else {
+ // Unix-like 绯荤粺
+ command = "ps -p " + pid;
+ }
+
+ Process process = Runtime.getRuntime().exec(command);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+ String line;
+
+ // 鍒ゆ柇杈撳嚭涓槸鍚﹀寘鍚繘绋嬩俊鎭�
+ while ((line = reader.readLine()) != null) {
+ if (line.contains(String.valueOf(pid))) {
+ isAlive = true;
+ break;
+ }
+ }
+
+ reader.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return isAlive;
+ }
+
+}
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
index 870c6b1..7544e90 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
@@ -233,4 +233,15 @@
and vote_num is not null
limit 1
</select>
+
+ <select id="getProcessList" resultType="com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess">
+ select *
+ from simulat_assess
+ where IS_DELETE = 0
+ and pid is not null
+ <if test="isAlive">
+ and process_is_alive=1
+ </if>
+ order by process_start_time desc
+ </select>
</mapper>
diff --git a/web/src/views/modules/taskReliability/Process.vue b/web/src/views/modules/taskReliability/Process.vue
new file mode 100644
index 0000000..45ae396
--- /dev/null
+++ b/web/src/views/modules/taskReliability/Process.vue
@@ -0,0 +1,87 @@
+<template>
+ <zt-dialog ref="dialog" title="绠楁硶搴撹繘绋嬭鎯�" append-to-body column="3" @close="close" :editAble="false">
+ <zt-table-wraper :dataForm="queryForm" ref="tableObj" v-slot="{ table }"
+ :page-size="20" :paging="true"
+ @dataLoaded="dataLoaded"
+ query-url="/taskReliability/SimulatAssess/process">
+ <el-form :inline="true" :model="queryForm" @keyup.enter.native="table.query()">
+ <el-form-item prop="isAlive" label-width="150px" style="margin-left: 20px">
+ <el-checkbox v-model="queryForm.isAlive">鍙湅瀛樻椿</el-checkbox>
+ </el-form-item>
+ </el-form>
+ <el-table ref="table" v-adaptive="{bottomOffset:30}" height="100px"
+ style="font-size: 18px"
+ v-loading="table.dataLoading"
+ :data="table.dataList"
+ border
+ highlight-current-row
+ @selection-change="table.selectionChangeHandle">
+ <el-table-column align="center" label="搴忓彿" prop="index" width="60">
+ <template slot-scope="scope">
+ <span v-html="indexFormat(scope.$index)"></span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="pid" label="杩涚▼ID" align="center" width="100"/>
+ <el-table-column prop="processIsAlive" label="瀛樻椿鐘舵��" align="center" width="100">
+ <template v-slot="{ row }">
+ <span v-if="row.processIsAlive" style="">瀛樻椿</span>
+ <span v-else>缁堟</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="commandLine" label="鍚姩鍛戒护琛�" align="center"/>
+ <el-table-column prop="progress" label="浠跨湡杩涘害" align="center" width="100"/>
+ <el-table-column prop="processStartTime" label="鐢熸垚鏃堕棿" align="center" width="200"/>
+ <el-table-column prop="processEndTime" label="缁堟鏃堕棿" align="center" width="200"/>
+ <el-table-column width="150" class="han" align="center" :table="table" label="鎿嶄綔">
+ <template v-slot="{ row }">
+ <zt-table-button v-if="row.processIsAlive" style="font-size: 18px" type="warning" @click="killProcess(row.id)">寮哄埗缁堟</zt-table-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </zt-table-wraper>
+ </zt-dialog>
+</template>
+
+<script>
+
+ export default {
+ data() {
+ return {
+ queryForm: {
+ isAlive: false,
+ },
+ }
+ },
+ watch: {
+ 'queryForm.isAlive'() {
+ this.$refs.tableObj.query()
+ },
+ },
+ components: {
+ },
+ mounted() {
+ this.$refs.tableObj.query()
+ },
+ methods: {
+ init() {
+ },
+ indexFormat(index) {
+ let page = this.$refs.tableObj.page
+ let limit = this.$refs.tableObj.limit
+ let indexs = limit * (page - 1) + index + 1
+ return '<span>' + indexs + '</span>'
+ },
+ async killProcess(id) {
+ if (id) {
+ let param = {
+ taskId: id
+ }
+ let res = await this.$http.get(`/taskReliability/SimulatAssess/killProcess`, {params: param})
+ this.$refs.tableObj.query()
+ }
+ },
+ },
+ }
+</script>
+<style>
+</style>
diff --git a/web/src/views/modules/taskReliability/SchemeCompar.vue b/web/src/views/modules/taskReliability/SchemeCompar.vue
index e255b9a..718307c 100644
--- a/web/src/views/modules/taskReliability/SchemeCompar.vue
+++ b/web/src/views/modules/taskReliability/SchemeCompar.vue
@@ -156,11 +156,11 @@
ProductModelTree,
},
watch: {
- percentage() {
- if (this.percentage === 100) {
- this.getEcharts();
- }
- }
+ // percentage() {
+ // if (this.percentage === 100) {
+ // this.getEcharts();
+ // }
+ // }
},
methods: {
onTreeSelected(data) {
@@ -205,18 +205,20 @@
console.log(res.data)
this.schemeList = res.data
},
- getStroke() {
- if (this.percentage < 100) {
- let param = {
- taskList: this.fzIdList
- }
- this.$http.get(`/taskReliability/SimulatAssess/getCalcProgress`, {params: param}).then(
- res => {
- if (res.data) {
- this.percentage = parseFloat(res.data)
- }
+ async getStroke() {
+ let param = {
+ taskList: this.fzIdList
+ }
+ let res = await this.$http.get(`/taskReliability/SimulatAssess/getCalcProgress`, {params: param})
+ if (res.success) {
+ if (res.data) {
+ this.percentage = parseFloat(res.data)
+ if (this.percentage >= 100) {
+ clearInterval(this.timers)
+ this.percentage = 0
+ await this.getEcharts();
}
- )
+ }
} else {
clearInterval(this.timers)
this.percentage = 0
@@ -233,6 +235,7 @@
simulatFrequency: this.dataForm.simulatFrequency
}
console.log(this.dataForm.taskModelId, 'this.dataForm.taskModelId')
+ this.percentage = 0
let res = await this.$http.get('/taskReliability/SimulatAssess/SchemeCompar', {params: params})
console.log(res.data, "res")
if (res.success) {
diff --git a/web/src/views/modules/taskReliability/SimulatAssess.vue b/web/src/views/modules/taskReliability/SimulatAssess.vue
index 915cb2e..de15fbc 100644
--- a/web/src/views/modules/taskReliability/SimulatAssess.vue
+++ b/web/src/views/modules/taskReliability/SimulatAssess.vue
@@ -24,6 +24,9 @@
<zt-form-item style="margin-left: 20px">
<zt-button @click="analyze()">浠跨湡鍒嗘瀽</zt-button>
</zt-form-item>
+ <zt-form-item style="margin-left: 20px">
+ <zt-button @click="displayProcess()">鏌ョ湅绠楁硶搴撹繘绋�</zt-button>
+ </zt-form-item>
</el-form>
<el-progress v-if="isShow" :percentage="percentage"></el-progress>
<el-col :span="4">
@@ -55,18 +58,20 @@
<el-button type="primary" @click="dialogVisible = false">鍏� 闂�</el-button>
</div>
</el-dialog>
+ <Process ref="process"></Process>
</div>
</template>
<script>
import SimulatCurve from "./SimulatCurve";
import ProductModelTree from "../basicInfo/ProductModelTree";
+ import Process from "./Process";
export default {
data() {
return {
- timers: '',
+ timers: null,
isSelect: false,
isShow: false,
percentage: 0,
@@ -94,15 +99,16 @@
this.getProductList()
},
watch: {
- percentage() {
- if (this.percentage === 100) {
- this.$refs.SimulatCurve.initEcharts(this.dataForm);
- }
- }
+ // percentage() {
+ // if (this.percentage === 100) {
+ // this.$refs.SimulatCurve.initEcharts(this.dataForm);
+ // }
+ // }
},
components: {
ProductModelTree,
SimulatCurve,
+ Process,
},
methods: {
@@ -141,18 +147,20 @@
console.log(res.data)
this.taskList = res.data
},
- getStroke() {
- if (this.percentage < 100) {
- let param = {
- taskList: [this.dataForm.id]
- }
- this.$http.get(`/taskReliability/SimulatAssess/getCalcProgress`, {params: param}).then(
- res => {
- if (res.data) {
- this.percentage = parseFloat(res.data)
- }
+ async getStroke() {
+ let param = {
+ taskList: [this.dataForm.id]
+ }
+ let res = await this.$http.get(`/taskReliability/SimulatAssess/getCalcProgress`, {params: param})
+ if (res.success) {
+ if (res.data) {
+ this.percentage = parseFloat(res.data)
+ if (this.percentage >= 100) {
+ clearInterval(this.timers)
+ this.percentage = 0
+ this.$refs.SimulatCurve.initEcharts(this.dataForm);
}
- )
+ }
} else {
clearInterval(this.timers)
this.percentage = 0
@@ -164,9 +172,10 @@
this.isShow = true
let result = await this.$http.get(`/basicInfo/TyProductModel/getUuid`)
this.dataForm.id = result.data
+ this.percentage = 0
let res = await this.$http.post('/taskReliability/SimulatAssess/analyze', this.dataForm)
if (res.success) {
- console.log(res.data)
+ console.log(res.data, 'res.data')
if (res.data && res.data.length > 0) {
this.modelCheckResult = res.data
this.dialogVisible = true
@@ -174,6 +183,9 @@
this.timers = window.setInterval(this.getStroke, 1000)
}
}
+ },
+ displayProcess() {
+ this.$refs.process.$refs.dialog.init()
}
}
}
--
Gitblit v1.9.1