From 1cbc5439e1a250427587b4b31473a0b4448b68ff Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期三, 23 十月 2024 11:04:52 +0800 Subject: [PATCH] 可靠性仿真评估时后端增加可修设备可修阶段可靠度固定为1的控制 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 64 +++++++++++++++++++++++++------- 1 files changed, 50 insertions(+), 14 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 e9557ad..b32a5ea 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 @@ -758,7 +758,8 @@ Element root = document.addElement("des"); root.addAttribute("name", "General system"); addTasksTag(taskPhaseModelAll, root); - addModelsTag(taskId, + addModelsTag(simulatAssess, + taskId, productId, product.getName(), product.getNamePath(), @@ -895,6 +896,10 @@ ele = repairModelTag.addElement("shape"); ele.addAttribute("value", String.valueOf(repairModel.getParam3())); break; + case RepairModel.TYPE_DIRAC: + ele = repairModelTag.addElement("repair-time"); + ele.addAttribute("value", String.valueOf(repairModel.getParam1())); + break; default: break; } @@ -937,7 +942,8 @@ return taskPhases; } - private void addModelsTag(Long taskId, + private void addModelsTag(SimulatAssess simulatAssess, + Long taskId, Long productId, String productName, String productNamePath, @@ -963,7 +969,8 @@ "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(taskId, + node2DOM(simulatAssess, + taskId, taskPhaseModel, gkModelTop.getModelId(), productId, @@ -981,7 +988,8 @@ } // 閫掑綊鍑芥暟 - private void node2DOM(Long taskId, + private void node2DOM(SimulatAssess simulatAssess, + Long taskId, TaskPhaseModel taskPhaseModel, Long modelId, Long productId, @@ -1011,7 +1019,8 @@ "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(taskId, + node2DOM(simulatAssess, + taskId, taskPhaseModel, gkModel.getModelId(), product.getId(), @@ -1027,9 +1036,10 @@ failureModels, repairModels); } else if ("5".equals(product.getProductType())) { // 璁惧 + Integer deviceNo = node.getDeviceNo(); Element nodeTag = parent.addElement("node"); - nodeTag.addAttribute("name", dataId.toString()); - nodeTag.addAttribute("real_name", product.getName()); + nodeTag.addAttribute("name", deviceNo == 0 ? dataId.toString() : dataId.toString()+"-"+deviceNo); + nodeTag.addAttribute("real_name", deviceNo == 0 ? product.getName() : product.getName()+"-"+deviceNo); nodeTag.addAttribute("name_path", product.getNamePath()); nodeTag.addAttribute("type", "node"); @@ -1061,7 +1071,12 @@ if (1 == paramData.getRepairable()) { // 鍙淮淇� - RepairModel repairModel = createRepairModel(paramData); + RepairModel repairModel = null; + if (isRepairDirac(simulatAssess.getRepairDiracFlag(), taskPhaseModel, product.getId())) { + repairModel = createRepairModelDirac(0); + } else { + repairModel = createRepairModel(paramData); + } repairModels.add(repairModel); Element repairTag = nodeTag.addElement("repair_model"); repairTag.addAttribute("name", repairModel.getId().toString()); @@ -1096,7 +1111,8 @@ for (String nodeStr : computerNodeListStr) { ModelNode mn = modelNodeAndVnodeList.stream().filter(item -> nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0); - node2DOM(taskId, + node2DOM(simulatAssess, + taskId, taskPhaseModel, modelId, null, @@ -1151,23 +1167,43 @@ return failureModel; } + private boolean isRepairDirac(boolean repairDiracFlag, TaskPhaseModel taskPhaseModel, Long productId) { + boolean result = false; + + if (repairDiracFlag) { + if (taskPhaseModel.getPhaseConstraints() != null) { + List<TaskPhaseConstraintDto> list = taskPhaseModel.getPhaseConstraints().stream().filter(item -> + productId.equals(item.getProductId())).collect(Collectors.toList()); + if (list.size() == 0) { + result = true; + } + } + } + + return result; + } + + private RepairModel createRepairModelDirac(double time) { + RepairModel repairModel = new RepairModel(); + repairModel.setId(UUIDUtil.generateId()); + repairModel.setParam1(0); + return repairModel; + } + private RepairModel createRepairModel(ParamData paramData) { RepairModel repairModel = new RepairModel(); repairModel.setId(UUIDUtil.generateId()); switch (paramData.getRepairDistribType()) { case 1: // 鎸囨暟鍒嗗竷 - repairModel.setType(FailureModel.TYPE_EXP); + repairModel.setType(RepairModel.TYPE_EXP); repairModel.setParam1(1.0 / paramData.getRepairMttcr()); break; case 2: // 濞佸竷灏斿垎甯� - repairModel.setType(FailureModel.TYPE_WBL); + repairModel.setType(RepairModel.TYPE_WBL); repairModel.setParam2(paramData.getRepairMttcrOtherParams2()); repairModel.setParam3(paramData.getRepairMttcrOtherParams3()); - break; - case 3: - // 浜岄」鍒嗗竷锛堢淮淇病鏈夛級 break; default: break; -- Gitblit v1.9.1