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 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

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);

--
Gitblit v1.9.1