From 300b8b3de2fbb30cecf30efe13930836167fe692 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 02 八月 2024 17:49:19 +0800
Subject: [PATCH] 修改仿真

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java |  105 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 81 insertions(+), 24 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..880ecaf 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);
@@ -273,12 +279,13 @@
         setlineXy(modelJson3, 0, y, x2, y, null);
         jsonArray.add(modelJson3);
 
-        double curPointHour = 50, periodHour = 50;
+        double curPointHour = 10, periodHour = 50;
         while (curPointHour < totalHours) {
             JSONObject modelJson4 = new JSONObject(templetsStrMap.get("model"));
             double x = curPointHour * pointNumPerHour;
             setlineXy(modelJson4, x, y, x, y, null);
             jsonArray.add(modelJson4);
+            curPointHour += 10.0;
         }
 
         return jsonObject.toString();
@@ -688,7 +695,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 +731,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 +748,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 +772,8 @@
                     productList,
                     paramDataList,
                     taskPhaseModelAll,
+                    binoParams,
+                    taskRepairParams,
                     root,
                     failureModels, repairModels);
             addFailureModelsTag(failureModels, root);
@@ -901,7 +913,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 +927,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 +937,8 @@
                               List<XhProductModel> productList,
                               List<ParamData> paramDataList,
                               List<TaskPhaseModel> taskPhaseModelAll,
+                              List<TaskBinoParam> binoParams,
+                              List<TaskRepairParam> taskRepairParams,
                               Element root,
                               List<FailureModel> failureModels,
                               List<RepairModel> repairModels) {
@@ -941,22 +957,28 @@
                     "end".equals(item.getAlgorithmType())).collect(Collectors.toList()).get(0);
             ModelNode computerNode = modelNodeAndVnodeList.stream().filter(item ->
                     endAlgo.getComputerList().equals(item.getId().toString())).collect(Collectors.toList()).get(0);
-            node2DOM(productList,
+            node2DOM(productId,
+                    productList,
                     paramDataList,
                     gkModelsAssembled,
                     algorithmList,
                     modelNodeAndVnodeList,
+                    binoParams,
+                    taskRepairParams,
                     computerNode, modelTag,
                     failureModels, repairModels);
         }
     }
 
     // 閫掑綊鍑芥暟
-    private void node2DOM(List<XhProductModel> productList,
+    private void node2DOM(Long productId,
+                          List<XhProductModel> productList,
                           List<ParamData> paramDataList,
                           List<OperatConditModel> gkModelsAssembled,
                           List<Algorithm> algorithmList,
                           List<ModelNode> modelNodeAndVnodeList,
+                          List<TaskBinoParam> binoParams,
+                          List<TaskRepairParam> taskRepairParams,
                           ModelNode node,
                           Element parent,
                           List<FailureModel> failureModels,
@@ -965,7 +987,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);
@@ -975,11 +997,14 @@
                         "end".equals(item.getAlgorithmType())).collect(Collectors.toList()).get(0);
                 ModelNode computerNode = modelNodeAndVnodeListSub.stream().filter(item ->
                         endAlgo.getComputerList().equals(item.getId().toString())).collect(Collectors.toList()).get(0);
-                node2DOM(productList,
+                node2DOM(product.getId(),
+                        productList,
                         paramDataList,
                         gkModelsAssembled,
                         algorithmListSub,
                         modelNodeAndVnodeListSub,
+                        binoParams,
+                        taskRepairParams,
                         computerNode, parent,
                         failureModels, repairModels);
             } else if ("5".equals(product.getProductType())) {
@@ -989,11 +1014,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()) {
@@ -1011,7 +1038,11 @@
             Algorithm algo = algorithmList.stream().filter(item ->
                     node.getId().equals(item.getId())).collect(Collectors.toList()).get(0);
             Element element = parent.addElement("logic");
-            element.addAttribute("name", algo.getId().toString());
+            if (null == productId) {
+                element.addAttribute("name", algo.getId().toString());
+            } else {
+                element.addAttribute("name", productId.toString());
+            }
             if ("series".equals(algo.getAlgorithmType())) {
                 element.addAttribute("type", "series");
             } else if ("parallel".equals(algo.getAlgorithmType())) {
@@ -1026,16 +1057,42 @@
             }
             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,
+                node2DOM(null,
+                        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