From ecd2f8acec4e743e18d978b7e0a1bb92bd17e70e Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期二, 13 八月 2024 15:38:25 +0800 Subject: [PATCH] 修改仿真后台 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 130 +++++++++++++++++++++++++++++++++---------- 1 files changed, 100 insertions(+), 30 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 10595e9..ec36a1c 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 @@ -17,7 +17,8 @@ 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.ProductStatusDto; -import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResult; +import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResultDto; +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 org.dom4j.Document; @@ -675,7 +676,7 @@ public Result simulate(SimulatAssess simulatAssess) { Result result = null; // 1. 妫�鏌ユā鍨嬪畬鏁存�� - List<TaskModelCheckResult> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(), + List<TaskModelCheckResultDto> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(), simulatAssess.getTaskModelId()); if (chkResult.size() > 0) { result = Result.error("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�"); @@ -782,7 +783,6 @@ 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); @@ -801,12 +801,12 @@ Element root = document.addElement("des"); root.addAttribute("name", "General system"); addTasksTag(taskPhaseModelAll, root); - addModelsTag(productId, + addModelsTag(taskId, + productId, productList, paramDataList, taskPhaseModelAll, binoParams, - taskRepairParams, root, failureModels, repairModels); addFailureModelsTag(failureModels, root); @@ -854,7 +854,8 @@ satpm.setPhaseName(phase.getPhaseName()); satpm.setPhaseDurationRate(phase.getPhaseDurationRate()); satpm.setPhaseDuration(phase.getPhaseDuration()); - satpm.setPhaseConstraint(null); // TODO + satpm.setPhaseConstraint(tpm.getPhaseConstraints().stream().map(item -> + item.getProductId().toString()).collect(Collectors.joining(","))); satpm.setGkId(tpm.getOperatConditId()); satpm.setGkName(tpm.getOperatConditName()); satpm.setGkDurationRate(tpm.getOperatConditDurationRate()); @@ -871,6 +872,11 @@ Element taskTag = tasksTag.addElement("task"); taskTag.addAttribute("duration", String.valueOf(taskPhaseModel.getOperatConditDuration())); taskTag.addAttribute("model", taskPhaseModel.getOperatConditId().toString()); + if (null != taskPhaseModel.getPhaseConstraints() && taskPhaseModel.getPhaseConstraints().size() > 0) { + taskTag.addAttribute("NAM", + taskPhaseModel.getPhaseConstraints().stream().map(item -> + item.getProductId().toString()).collect(Collectors.joining(","))); + } } } @@ -902,7 +908,7 @@ ele.addAttribute("value", String.valueOf(failureModel.getParam3())); break; case FailureModel.TYPE_FIX: - ele = failureModelTag.addElement("unreliability"); + ele = failureModelTag.addElement("reliability"); ele.addAttribute("value", String.valueOf(failureModel.getParam1())); break; default: @@ -945,6 +951,10 @@ double duration = taskPhase.getPhaseDuration() * taskPhaseModel.getOperatConditDurationRate() / totalRate; taskPhaseModel.setOperatConditDuration(duration); sum += duration; + + List<TaskPhaseConstraintDto> taskRepairConstraints = taskRepairParamDao.getTaskRepairConstraints(taskPhase.getTaskId(), + taskPhaseModel.getPhaseId(), taskPhaseModel.getOperatConditId()); + taskPhaseModel.setPhaseConstraints(taskRepairConstraints); taskPhaseModelAll.add(taskPhaseModel); } // 鎶婇浂澶磋ˉ鍒版渶鍚庝竴涓伐鍐垫ā鍨� @@ -968,12 +978,12 @@ return taskPhases; } - private void addModelsTag(Long productId, + private void addModelsTag(Long taskId, + Long productId, List<XhProductModel> productList, List<ParamData> paramDataList, List<TaskPhaseModel> taskPhaseModelAll, List<TaskBinoParam> binoParams, - List<TaskRepairParam> taskRepairParams, Element root, List<FailureModel> failureModels, List<RepairModel> repairModels) { @@ -992,28 +1002,32 @@ "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(productId, + node2DOM(taskId, + taskPhaseModel, + gkModelTop.getModelId(), + productId, productList, paramDataList, gkModelsAssembled, algorithmList, modelNodeAndVnodeList, binoParams, - taskRepairParams, computerNode, modelTag, failureModels, repairModels); } } // 閫掑綊鍑芥暟 - private void node2DOM(Long productId, + private void node2DOM(Long taskId, + TaskPhaseModel taskPhaseModel, + Long modelId, + 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, @@ -1032,37 +1046,53 @@ "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(product.getId(), + node2DOM(taskId, + taskPhaseModel, + gkModel.getModelId(), + product.getId(), productList, paramDataList, gkModelsAssembled, algorithmListSub, modelNodeAndVnodeListSub, binoParams, - taskRepairParams, computerNode, parent, failureModels, repairModels); } else if ("5".equals(product.getProductType())) { // 璁惧 - ParamData paramData = paramDataList.stream().filter(item -> - dataId.equals(item.getProductId())).collect(Collectors.toList()).get(0); 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()); + ParamData paramData = paramDataList.stream().filter(item -> + dataId.equals(item.getProductId())).collect(Collectors.toList()).get(0); + Double ratio = paramData.getTaskMtbcfOperatingRatio(); + if (null != ratio && ratio > 0) { + // 闂存柇鍨嬭澶囩殑澶勭悊 + double cycon = taskPhaseModel.getOperatConditDuration() * ratio; + double cycdown = taskPhaseModel.getOperatConditDuration() - cycon; + nodeTag.addAttribute("cycon", String.valueOf(cycon)); + nodeTag.addAttribute("cycdown", String.valueOf(cycdown)); + } + TaskBinoParam taskBinoParam = null; + if (3 == paramData.getReliabDistribType()) { + // 浜岄」鍒嗗竷澶勭悊 + taskBinoParam = binoParams.stream() + .filter(item -> taskId.equals(item.getTaskId())) + .filter(item -> taskPhaseModel.getPhaseId().equals(item.getPhaseId())) + .filter(item -> taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())) + .filter(item -> modelId.equals(item.getModelId())) + .filter(item -> dataId.equals(item.getProductId())) + .collect(Collectors.toList()).get(0); + } + FailureModel failureModel = createFailureModel(paramData, taskBinoParam); failureModels.add(failureModel); - Element failureTag = nodeTag.addElement("failure_model"); failureTag.addAttribute("name", failureModel.getId().toString()); + if (1 == paramData.getRepairable()) { - RepairModel repairModel = new RepairModel(); - repairModel.setId(UUIDUtil.generateId()); - repairModel.setType(RepairModel.TYPE_EXP); - repairModel.setParam1(1.0 / paramData.getRepairMttcr()); + // 鍙淮淇� + RepairModel repairModel = createRepairModel(paramData); repairModels.add(repairModel); Element repairTag = nodeTag.addElement("repair_model"); repairTag.addAttribute("name", repairModel.getId().toString()); @@ -1094,35 +1124,50 @@ for (String nodeStr : computerNodeListStr) { ModelNode mn = modelNodeAndVnodeList.stream().filter(item -> nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0); - node2DOM(null, + node2DOM(taskId, + taskPhaseModel, + modelId, + null, productList, paramDataList, gkModelsAssembled, algorithmList, modelNodeAndVnodeList, binoParams, - taskRepairParams, mn, element, failureModels, repairModels); } } } - private FailureModel createFailureModel(ParamData paramData) { + private FailureModel createFailureModel(ParamData paramData, TaskBinoParam taskBinoParam) { 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); + // 浜岄」鍒嗗竷 + if (taskBinoParam.getSimulatTimes().intValue() == taskBinoParam.getSuccessTimes().intValue()) { + // 鐩哥瓑鍒欎负鎴愯触鍨� + failureModel.setType(FailureModel.TYPE_FIX); + failureModel.setParam1(taskBinoParam.getSuccessRate()); + } else { + // 浜岄」鍒嗗竷 + failureModel.setType(FailureModel.TYPE_BIN); + failureModel.setParam1(taskBinoParam.getSuccessRate()); + failureModel.setParam2(taskBinoParam.getSimulatTimes()); + failureModel.setParam3(taskBinoParam.getSuccessTimes()); + } break; default: break; @@ -1130,4 +1175,29 @@ return failureModel; } + + private RepairModel createRepairModel(ParamData paramData) { + RepairModel repairModel = new RepairModel(); + repairModel.setId(UUIDUtil.generateId()); + switch (paramData.getRepairDistribType()) { + case 1: + // 鎸囨暟鍒嗗竷 + repairModel.setType(FailureModel.TYPE_EXP); + repairModel.setParam1(1.0 / paramData.getRepairMttcr()); + break; + case 2: + // 濞佸竷灏斿垎甯� + repairModel.setType(FailureModel.TYPE_WBL); + repairModel.setParam2(paramData.getRepairMttcrOtherParams2()); + repairModel.setParam3(paramData.getRepairMttcrOtherParams3()); + break; + case 3: + // 浜岄」鍒嗗竷锛堢淮淇病鏈夛級 + break; + default: + break; + } + + return repairModel; + } } -- Gitblit v1.9.1