From b19917255abcd8b44be207822a116292ba42a0cd Mon Sep 17 00:00:00 2001 From: jinlin <jinlin> Date: 星期五, 16 八月 2024 15:03:58 +0800 Subject: [PATCH] 修改 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 133 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 103 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 ce8118e..f014eb1 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 @@ -20,10 +20,12 @@ 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.*; +import com.zt.life.modules.mainPart.taskReliability.dto.ProductStatusDto; +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.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -679,7 +681,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("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�"); @@ -786,7 +788,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); @@ -805,12 +806,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); @@ -858,7 +859,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()); @@ -875,6 +877,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(","))); + } } } @@ -906,7 +913,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: @@ -949,6 +956,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); } // 鎶婇浂澶磋ˉ鍒版渶鍚庝竴涓伐鍐垫ā鍨� @@ -972,12 +983,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) { @@ -996,28 +1007,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, @@ -1036,37 +1051,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()); @@ -1098,41 +1129,81 @@ 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; } 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; } public List<WeakDto> getReliabilityWeakness(Long fzId, Long taskId, Long productId) { @@ -1264,11 +1335,13 @@ String filePath = path + "/" + simulatAssess.getId() + "/" + "result.xml"; String xml = null; InputStream in = null; + try { in = new FileInputStream(filePath); xml = IOUtils.toString(in); } catch (IOException e) { e.printStackTrace(); + throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑"); } finally { try { in.close(); -- Gitblit v1.9.1