From 33246bb56e05b273944ec1cc03a58dc112e48848 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 16 八月 2024 09:42:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 141 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 110 insertions(+), 31 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 b85272a..ecbd482 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,6 +20,9 @@
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;
@@ -679,7 +682,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 +789,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 +807,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 +860,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 +878,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 +914,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 +957,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 +984,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 +1008,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 +1052,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 +1130,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) {
@@ -1216,7 +1288,7 @@
}
}
- public SchemeComparDto SchemeCompar(String[] taskList) {
+ public SchemeComparDto SchemeCompar(String[] taskList, Long showProductId) {
SchemeComparDto dto = new SchemeComparDto();
List<SimulaDataDto> dataDtoList = new ArrayList<>();
List<SchemeComparCurve> curveList = new ArrayList<>();
@@ -1229,7 +1301,14 @@
Long taskModelId = Long.parseLong(taskId);
task = taskService.get(taskModelId);
simulatAssess = this.getByTaskId(taskModelId);
- SimulaDataDto resultData = this.getResultXML(simulatAssess);
+ SimulaDataDto resultData;
+ if (showProductId!=null){
+ simulatAssess.setShowProductId(showProductId);
+ resultData =this.getResultData(simulatAssess);
+ }else{
+ resultData = this.getResultXML(simulatAssess);
+ }
+
data = resultData;
data.setName(task.getTaskName());
dataDtoList.add(data);
--
Gitblit v1.9.1