From c0e3f24edd2ef47339c676ff3dc6fdc06b3c387e Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 18 十月 2024 10:42:40 +0800
Subject: [PATCH] 1)修改bug:可靠性预计参数配置,可靠性分布类型下拉框缺少威布尔分布; 2)细化可靠性仿真评估报错信息。

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdDao.java                  |    1 
 web/src/views/modules/taskReliability/ReliabilityAssess.vue                                                       |    1 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java              |  344 +++++++++++++++++++++++++++---------------
 modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml                                   |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java                      |    6 
 web/src/views/modules/basicInfo/ParamData.vue                                                                     |    7 
 modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml                                            |   18 +-
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java     |   22 +-
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java |   10 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java             |    2 
 modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml                                        |   10 +
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java      |   11 
 web/src/views/modules/taskReliability/SimulatAssess.vue                                                           |   35 +++
 13 files changed, 300 insertions(+), 171 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdDao.java
index 859ba83..cfd6045 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdDao.java
@@ -19,6 +19,7 @@
 public interface ModelRbdDao extends BaseDao<ModelRbd> {
 
     List<ModelRbd> getList(Map<String, Object> params);
+    List<ModelRbd> getListAll();
     ModelRbd getDiagram(Long modelId);
     ModelRbd getDiagramOfXDY(Long productId);
     void deleteByModelId(Long modelId);
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java
index 54f9a60..8db688a 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java
@@ -19,6 +19,6 @@
 public interface TaskBinoParamDao extends BaseDao<TaskBinoParam> {
 
     List<TaskBinoParam> getList(Map<String, Object> params);
-    List<TaskBinoParam> getBinoParams(Long taskModelId);
+    List<TaskBinoParam> getBinoParams(Long taskId);
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java
index 92c01f3..69d6a0c 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java
@@ -24,7 +24,7 @@
 
     List<Task> getTaskList(Long productId);
 
-    List<Task> getTaskModels(Long productId, Long taskModelId);
-    List<TaskPhase> getTaskModelPhases(Long productId, Long taskModelId);
-    List<TaskPhaseModel> getTaskModelPhaseModels(Long productId, Long taskModelId);
+    List<Task> getTasks(Long productId, Long taskId);
+    List<TaskPhase> getTaskPhases(Long productId, Long taskId);
+    List<TaskPhaseModel> getTaskPhaseModels(Long productId, Long taskId);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
index 8501008..cdced77 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
@@ -12,10 +12,10 @@
     public final static String CATEGORY_PARAM = "璁惧鍙傛暟鏈厤缃�";
     private String category; // 妫�鏌ョ粨鏋滃垎绫�
     private Long productId; // 浜у搧缁撴瀯鏍戣妭鐐笽D锛堜负浠诲姟鍙潬鎬у缓妯″璞¤妭鐐癸紝涓�鑸负鎬讳綋锛�
-    private Long taskModelId; // 浠诲姟妯″瀷ID
-    private String taskModelName; // 浠诲姟妯″瀷鍚嶇О
-    private Long taskModelPhaseId; // 浠诲姟闃舵ID
-    private String taskModelPhaseName; // 浠诲姟闃舵鍚嶇О
+    private Long taskId; // 浠诲姟ID
+    private String taskName; // 浠诲姟鍚嶇О
+    private Long taskPhaseId; // 浠诲姟闃舵ID
+    private String taskPhaseName; // 浠诲姟闃舵鍚嶇О
     private Long gkId; // 宸ュ喌ID
     private String gkName; // 宸ュ喌鍚嶇О
     private Long nodeId; // 鑺傜偣ID
@@ -24,6 +24,5 @@
     private String modelName; // 鑺傜偣閫夋嫨鐨勬ā鍨嬪悕绉�
     private Long deviceId; // 璁惧ID
     private String deviceName; // 璁惧鍚嶇О
-    private Long paramId; // 璁惧鍙傛暟ID
-    private String paramName; // 璁惧鍙傛暟鍚嶇О
+    private String paramName; // 鍙傛暟鍚嶇О
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
index 1016376..ccf5062 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
@@ -717,7 +717,7 @@
             try {
                 setParamToRedis(assessResult);
             } catch (Exception e) {
-                throw new RuntimeException("璁块棶Redis澶辫触銆傝妫�鏌edis鏄惁宸插惎鍔ㄣ��");
+                throw new RenException("璁块棶Redis澶辫触銆傝妫�鏌edis鏄惁宸插惎鍔ㄣ��");
             }
 
             Process process = null;
@@ -730,7 +730,7 @@
             } else if (System.getProperty("os.name").toLowerCase().indexOf("linux") > -1) {
                 process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command});
             } else {
-                throw new Exception("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒");
+                throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒");
             }
             is = process.getInputStream();
             // 浠ュ懡浠よ鏂瑰紡璋冪敤绠楁硶搴撴椂锛屾帴鍙g害瀹氳繑鍥炵殑缁撴灉鏄痷tf-8缂栫爜
@@ -741,11 +741,11 @@
             if (line != null) {
                 ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class);
                 if ("0".equals(rtn.getCode())) {
-                    logger.info("鍚姩绠楁硶搴撴垚鍔熴��");
+                    logger.info("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱鎴愬姛銆�");
                     result = Result.ok();
                 } else {
                     String errorMsg = rtn.getErrorMsg();
-                    throw new RuntimeException("鍚姩绠楁硶搴撳け璐�: errorMsg=" + errorMsg);
+                    throw new RenException("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱澶辫触: errorMsg=" + errorMsg);
                 }
             }
 
@@ -753,7 +753,7 @@
         } catch (Exception e) {
             logger.error("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱鏃跺彂鐢烢xception锛�", e);
             e.printStackTrace();
-            result = Result.error(e.getMessage());
+            throw new RenException("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱澶辫触: errorMsg=" + e.getMessage());
         } finally {
             if (is != null) {
                 try {
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 c95075e..f6132a6 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
@@ -612,8 +612,7 @@
         List<TaskModelCheckResultDto> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(),
                 simulatAssess.getTaskModelId());
         if (chkResult.size() > 0) {
-            result = Result.error("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�");
-//            result = Result.ok(chkResult);
+            result = Result.ok(chkResult);
             return result;
         }
 
@@ -634,7 +633,7 @@
             try {
                 setParamToRedis(simulatAssess);
             } catch (Exception e) {
-                throw new RuntimeException("璁块棶Redis澶辫触銆傝妫�鏌edis鏄惁宸插惎鍔ㄣ��");
+                throw new RenException("璁块棶Redis澶辫触銆傝妫�鏌edis鏄惁宸插惎鍔ㄣ��");
             }
 
             Process process = null;
@@ -647,7 +646,7 @@
             } else if (System.getProperty("os.name").toLowerCase().indexOf("linux") > -1) {
                 process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command});
             } else {
-                throw new Exception("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒");
+                throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒");
             }
             is = process.getInputStream();
             // 浠ュ懡浠よ鏂瑰紡璋冪敤绠楁硶搴撴椂锛屾帴鍙g害瀹氳繑鍥炵殑缁撴灉鏄痷tf-8缂栫爜
@@ -658,17 +657,17 @@
             if (line != null) {
                 ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class);
                 if ("0".equals(rtn.getCode())) {
-                    logger.info("鍚姩绠楁硶搴撴垚鍔熴��");
+                    logger.info("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱鎴愬姛銆�");
                     result = Result.ok();
                 } else {
                     String errorMsg = rtn.getErrorMsg();
-                    throw new RuntimeException("鍚姩绠楁硶搴撳け璐�: errorMsg=" + errorMsg);
+                    throw new RenException("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱澶辫触: errorMsg=" + errorMsg);
                 }
             }
-        } catch (Exception e) {
-            logger.error("鍚姩绠楁硶搴撲豢鐪熸椂鍙戠敓Exception锛�", e);
+        } catch (IOException e) {
+            logger.error("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱浠跨湡鏃跺彂鐢烢xception锛�", e);
             e.printStackTrace();
-            result = Result.error(e.getMessage());
+            throw new RenException("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱澶辫触: errorMsg=" + e.getMessage());
         } finally {
             if (is != null) {
                 try {
@@ -773,7 +772,7 @@
             insert(simulatAssess);
         } catch (Exception e) {
             e.printStackTrace();
-            throw new RuntimeException("缁勮绠楁硶搴撲豢鐪熻绠楃敤妯″瀷XML澶辫触: " + e.getMessage());
+            throw new RenException("缁勮绠楁硶搴撲豢鐪熻绠楃敤妯″瀷XML澶辫触: " + e.getMessage());
         }
     }
 
@@ -1113,7 +1112,8 @@
                 break;
             case 3:
                 // 浜岄」鍒嗗竷
-                if (taskBinoParam.getSimulatTimes().intValue() == taskBinoParam.getSuccessTimes().intValue()) {
+                if ((taskBinoParam.getSimulatTimes() == null && taskBinoParam.getSuccessTimes() == null) ||
+                        (taskBinoParam.getSimulatTimes().intValue() == taskBinoParam.getSuccessTimes().intValue())) {
                     // 鐩哥瓑鍒欎负鎴愯触鍨�
                     failureModel.setType(FailureModel.TYPE_FIX);
                     failureModel.setParam1(taskBinoParam.getSuccessRate());
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
index c0d7577..d79a8b5 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
@@ -22,11 +22,11 @@
 /**
  * task
  *
- * @author zt generator 
+ * @author zt generator
  * @since 1.0.0 2024-03-15
  */
 @Service
-public class TaskService  extends BaseService<TaskDao, Task> {
+public class TaskService extends BaseService<TaskDao, Task> {
 
     @Autowired
     private OperatConditModelDao operatConditModelDao;
@@ -34,6 +34,8 @@
     private ModelNodeAlgorithmDao modelNodeAlgorithmDao;
     @Autowired
     private ModelRbdDao modelRbdDao;
+    @Autowired
+    private AlgorithmDao algorithmDao;
     @Autowired
     private XhProductModelDao xhProductModelDao;
     @Autowired
@@ -61,7 +63,7 @@
     }
 
     public List<Task> getTaskList(Long productId) {
-        return  baseDao.getTaskList(productId);
+        return baseDao.getTaskList(productId);
     }
 
     /**
@@ -73,97 +75,215 @@
      * 4锛夊缓妯℃湭瀹屾垚
      * 5锛夎澶囧弬鏁版湭閰嶇疆
      * 鍙互瀵规墍鏈変换鍔℃ā鍨嬭繘琛屾鏌ワ紝涔熷彲浠ュ彧妫�鏌ュ叆鍙傛寚瀹氱殑浜у搧鑺傜偣涓嬬殑浠诲姟妯″瀷锛涘墠鑰呴�傚悎鍦ㄩ〉闈㈠垪琛ㄦ樉绀哄叏浣撳缓妯$姸鎬侊紝鍚庤�呴�傚悎瀵规煇浠诲姟杩涜浠跨湡鏃剁殑妫�鏌ャ��
+     *
      * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛�
      * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull
      */
-    public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskModelId) {
+    public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskId) {
         List<TaskModelCheckResultDto> checkResult = new ArrayList<>();
         List<XhProductModel> deviceUsedList = new ArrayList<>();    // 妫�鏌ュ璞℃ā鍨嬩腑浣跨敤鍒扮殑鎵�鏈夎澶�
 
         // 1. 鑾峰彇鏁版嵁
-        // 1.1 鑾峰彇鎵�鏈変换鍔℃ā鍨嬫暟鎹甃ist
-        List<Task> taskModelList = baseDao.getTaskModels(productId, taskModelId);
-        // 1.2 鑾峰彇鎵�鏈変换鍔℃ā鍨嬮樁娈垫暟鎹甃ist
-        List<TaskPhase> taskModelPhaseList = baseDao.getTaskModelPhases(productId, taskModelId);
-        // 1.3 鑾峰彇鎵�鏈変换鍔℃ā鍨嬪伐鍐垫暟鎹甃ist
-        List<TaskPhaseModel> taskModelPhaseModelList = baseDao.getTaskModelPhaseModels(productId, taskModelId);
+        // 1.1 鑾峰彇鎵�鏈変换鍔℃暟鎹甃ist
+        List<Task> taskList = baseDao.getTasks(productId, taskId);
+        // 1.2 鑾峰彇鎵�鏈変换鍔¢樁娈垫暟鎹甃ist
+        List<TaskPhase> taskPhaseList = baseDao.getTaskPhases(productId, taskId);
+        // 1.3 鑾峰彇鎵�鏈変换鍔″伐鍐垫暟鎹甃ist
+        List<TaskPhaseModel> taskPhaseModelList = baseDao.getTaskPhaseModels(productId, taskId);
         // 1.4 鑾峰彇浜у搧缁撴瀯鏍戠粨鏋勬暟鎹�
         List<XhProductModel> productTreeList = xhProductModelDao.getProductTree(productId);
-        // 1.5 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁
-        List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
-        // 1.6 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁List
+        // 1.5 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁List
         List<OperatConditModel> gkModelList = operatConditModelDao.getGKModelTrees(productId);
-        // 1.7 鑾峰彇鎵�鏈塕BD鏁版嵁List
-        Map<String, Object> mapFilter = new HashMap<>();
-        mapFilter.put("productId", productId);
-        List<ModelRbd> modelRbdList = modelRbdDao.getList(mapFilter);
-        // 1.8 鑾峰彇鎵�鏈夎澶囧弬鏁帮紙鍚换鍔℃ā鍨嬬殑浜岄」鍒嗗竷鍙傛暟锛塋ist
+        // 1.6 鑾峰彇鎵�鏈塕BD鏁版嵁List
+        List<ModelRbd> modelRbdList = modelRbdDao.getListAll();
+        // 1.7 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁
+        List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
+        // 1.8 鑾峰彇璇ヨ埞鐨勬墍鏈夎澶囧弬鏁癓ist
         List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
-        List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskModelId);
+        // 1.8 鑾峰彇璇ヤ换鍔$殑浜岄」鍒嗗竷鍙傛暟锛塋ist
+        List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskId);
 
-        // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬э紙閫掑綊锛�
-        for (Task taskModel : taskModelList) {
-            if (null == taskModel.getTaskDuration() || 0.0 == taskModel.getTaskDuration()) {
+        // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬�
+        for (Task task : taskList) {
+            if (null == task.getTaskDuration() || 0.0 == task.getTaskDuration()) {
                 // 2.1 浠诲姟鎬绘椂闀挎湭閰嶇疆
-                setTaskModelCheckResult(taskModel,
-                        null,
-                        null, null, null,
+                setTaskModelCheckResult(task, null, null,
+                        null, null, null, null,
                         TaskModelCheckResultDto.CATEGORY_TASK_TIME, checkResult);
             }
-            List<TaskPhase> phases = taskModelPhaseList.stream().filter(item ->
-                    taskModel.getId().equals(item.getTaskId())).collect(Collectors.toList());
+            List<TaskPhase> phases = taskPhaseList.stream().filter(item ->
+                    task.getId().equals(item.getTaskId())).collect(Collectors.toList());
             for (TaskPhase phase : phases) {
                 if (null == phase.getPhaseDurationRate() || 0.0 == phase.getPhaseDurationRate()) {
                     // 2.2 闃舵鏃堕暱鏈厤缃�
-                    setTaskModelCheckResult(taskModel,
-                            phase,
-                            null, null, null,
+                    setTaskModelCheckResult(task, phase, null,
+                            null, null, null, null,
                             TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult);
                 }
-                List<TaskPhaseModel> phaseModels = taskModelPhaseModelList.stream().filter(item ->
-                        phase.getId().equals(item.getPhaseId())).collect(Collectors.toList());
+                List<TaskPhaseModel> phaseModels = taskPhaseModelList.stream().filter(item ->
+                        phase.getId().equals(item.getPhaseId()) && 0.0 != item.getOperatConditDurationRate()).
+                        collect(Collectors.toList());
                 if (phaseModels.size() <= 0) {
-                    // 鏃犲伐鍐垫ā鍨嬫暟鎹�
                     // 2.3 宸ュ喌鏃堕暱鏈厤缃�
-                    setTaskModelCheckResult(taskModel,
-                            phase,
-                            null, null, null,
+                    setTaskModelCheckResult(task, phase, null,
+                            null, null, null, null,
                             TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
                 } else {
-                    // 鏈夊伐鍐垫ā鍨嬫暟鎹�
-                    List<TaskPhaseModel> phaseModelWithDurations = taskModelPhaseModelList.stream().filter(item ->
-                            0.0 != item.getOperatConditDurationRate()).collect(Collectors.toList());
-                    if (phaseModelWithDurations.size() <= 0) {
-                        // 鏃犲伐鍐垫ā鍨嬭閫夌敤
-                        // 2.3 宸ュ喌鏃堕暱鏈厤缃�
-                        for (TaskPhaseModel taskPhaseModel : phaseModels) {
-                            setTaskModelCheckResult(taskModel,
-                                    phase,
-                                    taskPhaseModel,
-                                    null, null,
-                                    TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
-                        }
-                    } else {
-                        // 鏈夊伐鍐垫ā鍨嬭閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐垫ā鍨�
-                        for (TaskPhaseModel taskPhaseModel : phaseModelWithDurations) {
-                            // 棣栧厛鎵惧埌椤跺眰妯″瀷
-                            List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item ->
-                                    taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())
-                                            && taskModel.getProductId().equals(item.getProductId())).collect(Collectors.toList());
-                            if (gkModelTops.size() <= 0) {
-                                // 鏃犲伐鍐垫ā鍨嬫爲鏍硅妭鐐癸紝鍗虫剰鍛崇潃鏃犲伐鍐垫ā鍨嬫爲
+                    // 鏈夊伐鍐佃閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐�
+                    for (TaskPhaseModel taskPhaseModel : phaseModels) {
+                        List<OperatConditModel> gkModelTree = gkModelList.stream().filter(item ->
+                                taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())).collect(Collectors.toList());
+                        if (gkModelTree.size() <= 0) {
+                            // 鏃犲伐鍐垫ā鍨嬫爲
+                            XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
+                                    task.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+                            setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                    node, null, null, null,
+                                    TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+                        } else {
+                            // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬�
+                            for (OperatConditModel gkModel : gkModelTree) {
                                 XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
-                                        taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
-                                setTaskModelCheckResult(taskModel,
-                                        phase,
-                                        taskPhaseModel,
-                                        null,
-                                        node,
-                                        TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
-                            } else {
-                                // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬�
-//                                checkGkModel(taskModel, phase, taskPhaseModel, gkModelTops.get(0),
-//                                        deviceUsedList, checkResult);
+                                        gkModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+                                if (null == gkModel.getModelId()) {
+                                    // 宸ュ喌妯″瀷鏍戜笉瀹屾暣
+                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                            node, null, null, null,
+                                            TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+                                } else {
+                                    List<ModelRbd> modelRbds = modelRbdList.stream().filter(item ->
+                                            gkModel.getModelId().equals(item.getId())).collect(Collectors.toList());
+                                    if (modelRbds.size() == 0) {
+                                        // 寤烘ā鏈畬鎴�
+                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                node, null, null, null,
+                                                TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
+                                    } else {
+                                        if (!"宸插畬鎴�".equals(modelRbds.get(0).getModelState())) {
+                                            // 寤烘ā鏈畬鎴�
+                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                    node, modelRbds.get(0), null, null,
+                                                    TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
+                                        } else {
+                                            List<ModelNodeAlgorithm> deviceNodes = rbdNodeList.stream().filter(item ->
+                                                    gkModel.getModelId().equals(item.getModelId())).collect(Collectors.toList());
+                                            for (ModelNodeAlgorithm deviceNode : deviceNodes) {
+                                                XhProductModel device = (XhProductModel) productTreeList.stream().filter(item ->
+                                                        deviceNode.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
+                                                if ("5".equals(device.getProductType())) {
+                                                    // 璁惧
+                                                    List<ParamData> params = paramDataList.stream().filter(item ->
+                                                            deviceNode.getDataId().equals(item.getProductId())).collect(Collectors.toList());
+                                                    if (params.size() == 0) {
+                                                        // 璁惧鍙傛暟鏈厤缃�
+                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                node, modelRbds.get(0), device, null,
+                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                    } else {
+                                                        ParamData param = params.get(0);
+                                                        if (param.getReliabDistribType() == null) {
+                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                    node, modelRbds.get(0), device, "鍙潬鎬у垎甯冪被鍨�",
+                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                        } else {
+                                                            if (param.getReliabDistribType() == 1) {
+                                                                // 鎸囨暟鍒嗗竷
+                                                                if (param.getTaskMtbcfRegulate() == null) {
+                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                            node, modelRbds.get(0), device, "MTBCF",
+                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                }
+                                                            }
+                                                            if (param.getReliabDistribType() == 2) {
+                                                                // 濞佸竷灏斿垎甯�
+                                                                if (param.getTaskMtbcfRegulate() == null) {
+                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                            node, modelRbds.get(0), device, "MTBCF",
+                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                }
+                                                                if (param.getTaskMtbcfOtherParams2() == null) {
+                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                            node, modelRbds.get(0), device, "MTBCF鍙傛暟2",
+                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                }
+                                                                if (param.getTaskMtbcfOtherParams3() == null) {
+                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                            node, modelRbds.get(0), device, "MTBCF鍙傛暟3",
+                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                }
+                                                            }
+                                                            if (param.getReliabDistribType() == 3) {
+                                                                // 浜岄」鍒嗗竷
+                                                                List<TaskBinoParam> binoParams = binoParamList.stream().filter(item ->
+                                                                        phase.getId().equals(item.getPhaseId()) &&
+                                                                                taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) &&
+                                                                                modelRbds.get(0).getId().equals(item.getModelId()) &&
+                                                                                device.getId().equals(item.getProductId())).collect(Collectors.toList());
+                                                                if (binoParams.size() == 0) {
+                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                            node, modelRbds.get(0), device, "浜岄」鍒嗗竷鍙傛暟",
+                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                } else {
+                                                                    TaskBinoParam binoParam = binoParams.get(0);
+                                                                    if (binoParam.getSuccessRate() == null) {
+                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                node, modelRbds.get(0), device, "鎴愬姛鐜�",
+                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                    } else {
+                                                                        if (binoParam.getSuccessTimes() != null && binoParam.getSimulatTimes() == null) {
+                                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                    node, modelRbds.get(0), device, "鎬绘鏁�",
+                                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                        }
+                                                                        if (binoParam.getSuccessTimes() == null && binoParam.getSimulatTimes() != null) {
+                                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                    node, modelRbds.get(0), device, "鎴愬姛娆℃暟",
+                                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+                                                            if (1 == param.getRepairable()) {
+                                                                // 鍙淮淇�
+                                                                if (param.getRepairDistribType() == null) {
+                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                            node, modelRbds.get(0), device, "缁翠慨鍒嗗竷绫诲瀷",
+                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                }
+                                                                if (param.getRepairDistribType() == 1) {
+                                                                    // 鎸囨暟鍒嗗竷
+                                                                    if (param.getRepairMttcr() == null) {
+                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                node, modelRbds.get(0), device, "MTTCR",
+                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                    }
+                                                                }
+                                                                if (param.getRepairDistribType() == 2) {
+                                                                    // 濞佸竷灏斿垎甯�
+                                                                    if (param.getRepairMttcr() == null) {
+                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                node, modelRbds.get(0), device, "MTTCR",
+                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                    }
+                                                                    if (param.getRepairMttcrOtherParams2() == null) {
+                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                node, modelRbds.get(0), device, "MTTCR鍙傛暟2",
+                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                    }
+                                                                    if (param.getRepairMttcrOtherParams3() == null) {
+                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
+                                                                                node, modelRbds.get(0), device, "MTTCR鍙傛暟3",
+                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     }
@@ -176,69 +296,41 @@
 
     }
 
-    // 閫掑綊鍑芥暟
-    private void checkGkModel(Task taskModel,
-                              TaskPhase phase,
-                              TaskPhaseModel taskPhaseModel,
-                              OperatConditModel gkModelTreeTop,
-                              List<OperatConditModel> gkModelList,
-                              List<ModelNodeAlgorithm> rbdNodeList,
-                              List<XhProductModel> productTreeList,
-                              List<XhProductModel> deviceUsedList,
-                              List<TaskModelCheckResultDto> checkResult) {
-        // 棣栧厛鎵惧埌椤跺眰妯″瀷
-        List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item ->
-                taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())
-                        && taskModel.getProductId().equals(item.getProductId())).collect(Collectors.toList());
-        if (gkModelTops.size() <= 0) {
-            // 宸ュ喌妯″瀷鏍戜笉瀹屾暣锛堥《灞傝妭鐐规湭閰嶇疆妯″瀷锛�
-            XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
-                    taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
-            setTaskModelCheckResult(taskModel,
-                    phase,
-                    taskPhaseModel,
-                    null,
-                    node,
-                    TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
-        }
-    }
-
-    private void setTaskModelCheckResult(Task taskModel,
-                                         TaskPhase taskModelPhase,
-                                         TaskPhaseModel taskModelPhaseModel,
-                                         OperatConditModel gkModel,
+    private void setTaskModelCheckResult(Task task,
+                                         TaskPhase taskPhase,
+                                         TaskPhaseModel taskPhaseModel,
                                          XhProductModel node,
+                                         ModelRbd model,
+                                         XhProductModel device,
+                                         String paramName,
                                          String category,
                                          List<TaskModelCheckResultDto> checkResult) {
         TaskModelCheckResultDto result = new TaskModelCheckResultDto();
         result.setCategory(category);
-        result.setProductId(taskModel.getProductId());
-        result.setTaskModelId(taskModel.getId());
-        result.setTaskModelName(taskModel.getTaskName());
-        switch(category) {
-            case TaskModelCheckResultDto.CATEGORY_TASK_TIME:
-                break;
-            case TaskModelCheckResultDto.CATEGORY_PHASE_TIME:
-                result.setTaskModelPhaseId(taskModelPhase.getId());
-                result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
-                break;
-            case TaskModelCheckResultDto.CATEGORY_GK_TIME:
-                result.setTaskModelPhaseId(taskModelPhase.getId());
-                result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
-                if (null != taskModelPhaseModel) {
-                    result.setGkId(taskModelPhaseModel.getOperatConditId());
-                    result.setGkName(taskModelPhaseModel.getOperatConditName());
-                }
-                break;
-            case TaskModelCheckResultDto.CATEGORY_GK_MODEL:
-                result.setTaskModelPhaseId(taskModelPhase.getId());
-                result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
-                result.setGkId(taskModelPhaseModel.getOperatConditId());
-                result.setGkName(taskModelPhaseModel.getOperatConditName());
-                result.setNodeId(node.getId());
-                result.setNodeName(node.getName());
-                break;
+        result.setProductId(task.getProductId());
+        result.setTaskId(task.getId());
+        result.setTaskName(task.getTaskName());
+        if (taskPhase != null) {
+            result.setTaskPhaseId(taskPhase.getId());
+            result.setTaskPhaseName(taskPhase.getPhaseName());
         }
+        if (taskPhaseModel != null) {
+            result.setGkId(taskPhaseModel.getOperatConditId());
+            result.setGkName(taskPhaseModel.getOperatConditName());
+        }
+        if (node != null) {
+            result.setNodeId(node.getId());
+            result.setNodeName(node.getName());
+        }
+        if (model != null) {
+            result.setModelId(model.getId());
+            result.setModelName(model.getModelName());
+        }
+        if (device != null) {
+            result.setDeviceId(device.getId());
+            result.setDeviceName(device.getName());
+        }
+        result.setParamName(paramName);
         checkResult.add(result);
     }
 }
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml
index 5a1a366..4e2475b 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml
@@ -43,6 +43,16 @@
         </where>
         limit 1
     </select>
+    <select id="getListAll" resultType="com.zt.life.modules.mainPart.taskReliability.model.ModelRbd">
+        select a.*,
+        CASE
+        WHEN b.end =1 THEN '宸插畬鎴�'
+        ELSE '鏈畬鎴�' END AS modelState
+        from model_rbd a
+        left join (select model_id,1 as end from algorithm where model_type = 'end' and is_delete=0 ) b on b.model_id = a.id
+        where
+            a.is_delete = 0
+    </select>
 
     <update id="deleteByModelId">
         delete
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml
index bc584f3..b12ad72 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml
@@ -68,8 +68,6 @@
             task_bino_param a
         where
             a.IS_DELETE=0
-        <if test="shipId!=null">
-            and a.task_id = #{taskModelId}
-        </if>
+            and a.task_id = #{taskId}
     </select>
 </mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml
index 0f7f89b..3c8ebf3 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml
@@ -26,7 +26,7 @@
         and a.product_id=${productId}
     </select>
 
-    <select id="getTaskModels" resultType="com.zt.life.modules.mainPart.taskReliability.model.Task">
+    <select id="getTasks" resultType="com.zt.life.modules.mainPart.taskReliability.model.Task">
         select
             a.*
         FROM
@@ -36,12 +36,12 @@
         <if test="productId!=null">
             and a.product_id=${productId}
         </if>
-        <if test="taskModelId!=null">
-            and a.id=${taskModelId}
+        <if test="taskId!=null">
+            and a.id=${taskId}
         </if>
         ORDER BY a.task_sort
     </select>
-    <select id="getTaskModelPhases" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskPhase">
+    <select id="getTaskPhases" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskPhase">
         select
             b.*
         FROM
@@ -53,12 +53,12 @@
         <if test="productId!=null">
             and a.product_id=${productId}
         </if>
-        <if test="taskModelId!=null">
-            and a.id=${taskModelId}
+        <if test="taskId!=null">
+            and a.id=${taskId}
         </if>
         ORDER BY a.task_sort, b.phase_sort
     </select>
-    <select id="getTaskModelPhaseModels" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskPhaseModel">
+    <select id="getTaskPhaseModels" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskPhaseModel">
         select
             c.*
         FROM
@@ -75,8 +75,8 @@
             and a.product_id=${productId}
             and d.product_id=${productId}
         </if>
-        <if test="taskModelId!=null">
-            and a.id=${taskModelId}
+        <if test="taskId!=null">
+            and a.id=${taskId}
         </if>
         ORDER BY a.task_sort, b.phase_sort
     </select>
diff --git a/web/src/views/modules/basicInfo/ParamData.vue b/web/src/views/modules/basicInfo/ParamData.vue
index fe90112..5519625 100644
--- a/web/src/views/modules/basicInfo/ParamData.vue
+++ b/web/src/views/modules/basicInfo/ParamData.vue
@@ -335,7 +335,12 @@
           {
             value: 1,
             label: '鎸囨暟鍒嗗竷'
-          }, {
+          },
+          {
+            value: 2,
+            label: '濞佸竷灏斿垎甯�'
+          },
+          {
             value: 3,
             label: '浜岄」鍒嗗竷'
           }
diff --git a/web/src/views/modules/taskReliability/ReliabilityAssess.vue b/web/src/views/modules/taskReliability/ReliabilityAssess.vue
index c6e7205..49562fe 100644
--- a/web/src/views/modules/taskReliability/ReliabilityAssess.vue
+++ b/web/src/views/modules/taskReliability/ReliabilityAssess.vue
@@ -143,6 +143,7 @@
       async assess() {
         if (!this.dataForm.productId || !this.dataForm.taskId || !this.dataForm.itemId || !this.dataForm.confidence) {
           this.$tip.alert("鏈夋湭濉啓鐨勬暟鎹�")
+          return
         }
         let res = await this.$http.post('/taskReliability/ReliabilityAssess/assess', this.dataForm)
         console.log(res.data)
diff --git a/web/src/views/modules/taskReliability/SimulatAssess.vue b/web/src/views/modules/taskReliability/SimulatAssess.vue
index e8c100b..e957d47 100644
--- a/web/src/views/modules/taskReliability/SimulatAssess.vue
+++ b/web/src/views/modules/taskReliability/SimulatAssess.vue
@@ -35,6 +35,23 @@
             </div>
           </el-col>
     </el-row>
+    <el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" title="妯″瀷妫�鏌�" width="60%" @close="dialogVisible = false">
+      <el-tag type="danger">妯″瀷瀹氫箟/鍙傛暟閰嶇疆閲屽瓨鍦ㄤ互涓嬮棶棰橈細</el-tag>
+      <el-table :data="modelCheckResult" height="100px" v-adaptive="{bottomOffset:30}"
+                :header-cell-style="{'text-align':'center'}">
+        <el-table-column prop="category" label="妫�鏌ョ粨鏋�" align="center" width="150"/>
+        <el-table-column prop="taskName" label="浠诲姟鍚嶇О" align="center"/>
+        <el-table-column prop="taskPhaseName" label="浠诲姟闃舵鍚嶇О" align="center"/>
+        <el-table-column prop="gkName" label="宸ュ喌鍚嶇О" align="center"/>
+        <el-table-column prop="nodeName" label="鑺傜偣鍚嶇О" align="center"/>
+        <el-table-column prop="modelName" label="妯″瀷鍚嶇О" align="center"/>
+        <el-table-column prop="deviceName" label="璁惧鍚嶇О" align="center"/>
+        <el-table-column prop="paramName" label="鍙傛暟鍚嶇О" align="center"/>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogVisible = false">鍏� 闂�</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -63,8 +80,10 @@
           dataType: 'fz',
           samplPeriod: '10',
           simulatFrequency: 500,
-          simulatTime: ''
-        }
+          simulatTime: '',
+        },
+        dialogVisible: false,
+        modelCheckResult: [],
       }
     },
     mounted() {
@@ -132,16 +151,20 @@
         }
       },
       async analyze() {
+        this.dialogVisible = false
+        this.modelCheckResult = []
         this.isShow = true
         let result = await this.$http.get(`/basicInfo/TyProductModel/getUuid`)
         this.dataForm.id = result.data
         let res = await this.$http.post('/taskReliability/SimulatAssess/analyze', this.dataForm)
         if (res.success) {
-          // let chkResult = res.data
-          // console.log(chkResult)
-          // if (chkResult.length == 0) {
+          console.log(res.data)
+          if (res.data != null && res.data.length > 0) {
+            this.modelCheckResult = res.data
+            this.dialogVisible = true
+          } else {
             this.timers = window.setInterval(this.getStroke, 1000)
-          // }
+          }
         }
       }
     }

--
Gitblit v1.9.1