From a43fd8f15c7da7f4a14ba4ebb79970dad4ce1fae Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 02 八月 2024 15:18:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java |   84 +++++++++++++++++++++++++++++++++---------
 1 files changed, 66 insertions(+), 18 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 abaa21e..89f2744 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
@@ -1,8 +1,7 @@
 package com.zt.life.modules.mainPart.taskReliability.service;
 
-import com.alibaba.fastjson.JSONObject;
-import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONArray;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.spire.pdf.tables.table.convert.Convert;
 import com.zt.common.exception.RenException;
@@ -14,12 +13,9 @@
 import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
 import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
 import com.zt.life.modules.mainPart.taskReliability.dao.*;
-import com.zt.common.servlet.Result;
 import com.zt.common.utils.JsonUtils2;
-import com.zt.common.utils.UUIDUtil;
 import com.zt.life.modules.mainPart.taskReliability.dao.SimulatAssessDao;
 import com.zt.life.modules.mainPart.taskReliability.dao.TimeDiagramDao;
-import com.zt.life.modules.mainPart.taskReliability.dto.ModelDto;
 import com.zt.life.modules.mainPart.taskReliability.dto.ProductStatusDto;
 import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResult;
 import com.zt.life.modules.mainPart.taskReliability.model.*;
@@ -31,13 +27,13 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.zt.life.modules.mainPart.taskReliability.dto.StatusDto;
+import com.zt.life.modules.mainPart.taskReliability.model.ModelRbd;
 import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
 import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssessTaskPhaseModel;
 import com.zt.life.modules.mainPart.taskReliability.model.TimeDiagram;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -51,7 +47,6 @@
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
-import java.util.stream.Collectors;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -98,13 +93,16 @@
     private XhProductModelDao xhProductModelDao;
     @Autowired
     private ParamDataDao paramDataDao;
+    @Autowired
+    private TaskBinoParamDao taskBinoParamDao;
+    @Autowired
+    private TaskRepairParamDao taskRepairParamDao;
 
     @Autowired
     private TimeDiagramDao timeDiagramDao;
 
     @Value("${data.reliaSimLib.resultHome}")
     private String path;
-
 
     private JSONObject dialgramJson;
 
@@ -257,13 +255,21 @@
             } else {
                 setlineXy(modelJson2, x2, y1, x2, y2, null);
             }
-
             jsonArray.add(modelJson2);
 
+            //鍒ゆ柇鏄惁鏈夋ā鍨�
+            ModelRbd modelRbd = baseDao.getModelByProductGk(modelDto.getGkId(), productId);
+            String modelName = "鏈敤";
+            String modelId = "";
+            if (modelRbd != null) {
+                modelName = modelRbd.getModelName();
+                modelId = modelRbd.getId().toString();
+            }
+
             JSONObject textJson = new JSONObject(templetsStrMap.get("text"));
-            JsonUtils2.setJsonValueByPath(textJson, "data/dataId".split("/"), modelDto.getGkId());
+            JsonUtils2.setJsonValueByPath(textJson, "data/dataId".split("/"), modelId);
             JsonUtils2.setJsonValueByPath(textJson, "id".split("/"), UUIDUtil.generateId().toString());
-            JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), modelDto.getGkName());
+            JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), modelName);
             JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), x1 + 30);
             JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y1);
             jsonArray.add(textJson);
@@ -688,7 +694,7 @@
             logger.info("绠楁硶搴撹繑鍥炵粨鏋滐細" + line);
 //            int exitCode = process.waitFor(); // 寮傛鏂瑰紡锛屼笉绛夊緟绠楁硶搴撹绠楀畬姣曪紝鎵�浠ヨ娉ㄩ噴鎺夎琛�
             if (line != null) {
-                ReliaSimLibResult rtn = JSONObject.parseObject(line, ReliaSimLibResult.class);
+                ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class);
                 if ("0".equals(rtn.getCode())) {
                     logger.info("鍚姩绠楁硶搴撴垚鍔熴��");
                     result = Result.ok();
@@ -724,7 +730,7 @@
     private void setParamToRedis(SimulatAssess simulatAssess) {
         String key = simulatAssess.getId().toString() + RELIA_SIM_TASK_TYPE_SIMULATION;
         logger.info("redis key锛�" + key);
-        JSONObject jsonObject = new JSONObject();
+        com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
         jsonObject.put("xmlfile", simulatAssess.getXml());
         // 浠跨湡娆℃暟
         jsonObject.put("simulate_times", simulatAssess.getSimulatFrequency());
@@ -741,6 +747,9 @@
         List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
         Long taskId = simulatAssess.getTaskModelId();
         Task task = taskService.get(taskId);
+        List<TaskBinoParam> binoParams = taskBinoParamDao.getBinoParams(taskId);
+        List<TaskRepairParam> taskRepairParams = taskRepairParamDao.getTaskRepairParams(taskId);
+
         // 1. 璁$畻鍚勪换鍔¢樁娈电殑杩愯鏃堕暱
         List<TaskPhase> taskPhases = calcTaskPhaseDuration(task);
         // 2. 璁$畻鍚勫伐鍐垫ā鍨嬬殑杩愯鏃堕暱
@@ -762,6 +771,8 @@
                     productList,
                     paramDataList,
                     taskPhaseModelAll,
+                    binoParams,
+                    taskRepairParams,
                     root,
                     failureModels, repairModels);
             addFailureModelsTag(failureModels, root);
@@ -901,7 +912,8 @@
             taskPhaseModelAll.add(taskPhaseModel);
         }
         // 鎶婇浂澶磋ˉ鍒版渶鍚庝竴涓伐鍐垫ā鍨�
-        taskPhaseModels.get(taskPhaseModels.size()-1).setOperatConditDuration(taskPhase.getPhaseDuration() - sum);
+        double duration = taskPhaseModels.get(taskPhaseModels.size()-1).getOperatConditDuration();
+        taskPhaseModels.get(taskPhaseModels.size()-1).setOperatConditDuration(duration + taskPhase.getPhaseDuration() - sum);
     }
 
     private List<TaskPhase> calcTaskPhaseDuration(Task task) {
@@ -914,7 +926,8 @@
             sum += duration;
         }
         // 鎶婇浂澶磋ˉ鍒版渶鍚庝竴涓樁娈�
-        taskPhases.get(taskPhases.size()-1).setPhaseDuration(task.getTaskDuration() - sum);
+        double duration = taskPhases.get(taskPhases.size()-1).getPhaseDuration();
+        taskPhases.get(taskPhases.size()-1).setPhaseDuration(duration + task.getTaskDuration() - sum);
 
         return taskPhases;
     }
@@ -923,6 +936,8 @@
                               List<XhProductModel> productList,
                               List<ParamData> paramDataList,
                               List<TaskPhaseModel> taskPhaseModelAll,
+                              List<TaskBinoParam> binoParams,
+                              List<TaskRepairParam> taskRepairParams,
                               Element root,
                               List<FailureModel> failureModels,
                               List<RepairModel> repairModels) {
@@ -946,6 +961,8 @@
                     gkModelsAssembled,
                     algorithmList,
                     modelNodeAndVnodeList,
+                    binoParams,
+                    taskRepairParams,
                     computerNode, modelTag,
                     failureModels, repairModels);
         }
@@ -957,6 +974,8 @@
                           List<OperatConditModel> gkModelsAssembled,
                           List<Algorithm> algorithmList,
                           List<ModelNode> modelNodeAndVnodeList,
+                          List<TaskBinoParam> binoParams,
+                          List<TaskRepairParam> taskRepairParams,
                           ModelNode node,
                           Element parent,
                           List<FailureModel> failureModels,
@@ -965,7 +984,7 @@
             Long dataId = node.getDataId();
             XhProductModel product = productList.stream().filter(item ->
                     dataId.equals(item.getId())).collect(Collectors.toList()).get(0);
-            if ("3,4,10".equals(product.getProductType())) {
+            if ("3,4,10".contains(product.getProductType())) {
                 // 绯荤粺銆佸垎绯荤粺銆佽櫄鍗曞厓
                 OperatConditModel gkModel = gkModelsAssembled.stream().filter(item ->
                         dataId.equals(item.getProductId())).collect(Collectors.toList()).get(0);
@@ -980,6 +999,8 @@
                         gkModelsAssembled,
                         algorithmListSub,
                         modelNodeAndVnodeListSub,
+                        binoParams,
+                        taskRepairParams,
                         computerNode, parent,
                         failureModels, repairModels);
             } else if ("5".equals(product.getProductType())) {
@@ -989,11 +1010,13 @@
                 Element nodeTag = parent.addElement("node");
                 nodeTag.addAttribute("name", dataId.toString());
                 nodeTag.addAttribute("type", "node");
+
                 FailureModel failureModel = new FailureModel();
                 failureModel.setId(UUIDUtil.generateId());
                 failureModel.setType(FailureModel.TYPE_EXP);
                 failureModel.setParam1(1.0 / paramData.getTaskMtbcfRegulate());
                 failureModels.add(failureModel);
+
                 Element failureTag = nodeTag.addElement("failure_model");
                 failureTag.addAttribute("name", failureModel.getId().toString());
                 if (1 == paramData.getRepairable()) {
@@ -1026,16 +1049,41 @@
             }
             String[] computerNodeListStr = algo.getComputerList().split(",");
             for (String nodeStr : computerNodeListStr) {
-                ModelNode md = modelNodeAndVnodeList.stream().filter(item ->
+                ModelNode mn = modelNodeAndVnodeList.stream().filter(item ->
                         nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0);
                 node2DOM(productList,
                         paramDataList,
                         gkModelsAssembled,
                         algorithmList,
                         modelNodeAndVnodeList,
-                        md, element,
+                        binoParams,
+                        taskRepairParams,
+                        mn, element,
                         failureModels, repairModels);
             }
         }
     }
+
+    private FailureModel createFailureModel(ParamData paramData) {
+        FailureModel failureModel = new FailureModel();
+        failureModel.setId(UUIDUtil.generateId());
+        switch (paramData.getReliabDistribType()) {
+            case 1:
+                failureModel.setType(FailureModel.TYPE_EXP);
+                failureModel.setParam1(1.0 / paramData.getTaskMtbcfRegulate());
+                break;
+            case 2:
+                failureModel.setType(FailureModel.TYPE_WBL);
+                failureModel.setParam2(paramData.getTaskMtbcfOtherParams2());
+                failureModel.setParam3(paramData.getTaskMtbcfOtherParams3());
+                break;
+            case 3:
+                failureModel.setType(FailureModel.TYPE_BIN);
+                break;
+            default:
+                break;
+        }
+
+        return failureModel;
+    }
 }

--
Gitblit v1.9.1