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 | 59 +++++++++++++++++++++++------
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java | 31 +++++++++------
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/RepairModel.java | 3 -
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java | 2
4 files changed, 68 insertions(+), 27 deletions(-)
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java
index 704a9a4..401e0ee 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java
@@ -17,7 +17,7 @@
@ApiModelProperty(value = "闃舵id")
private Long phaseId;
- @ApiModelProperty(value = "宸ュ喌妯″瀷id锛堝綋鍓嶆湭浣跨敤锛�")
+ @ApiModelProperty(value = "宸ュ喌妯″瀷id")
private Long gkModelId;
@ApiModelProperty(value = "浜у搧缁撴瀯鏍戣妭鐐笽D锛堝綋鍓嶆湭浣跨敤锛�")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/RepairModel.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/RepairModel.java
index 17e3026..fa31914 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/RepairModel.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/RepairModel.java
@@ -6,9 +6,8 @@
@Data
public class RepairModel {
public static final String TYPE_EXP = "exponential";
- public static final String TYPE_BIN = "binomial";
public static final String TYPE_WBL = "weibull";
- public static final String TYPE_FIX = "fixed";
+ public static final String TYPE_DIRAC = "dirac";
@ApiModelProperty(value = "ID")
private Long id;
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
index ccf5062..b93cfba 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
@@ -376,9 +376,9 @@
String NoEStr = "";
String ToEStr = "";
String FStr = "";
- for (ModelNode node : nodeList) {
+// for (ModelNode node : nodeList) {
List<ReliabilityAssess> assessDatas = assessDataList.stream().filter(item ->
- node.getDataId().equals(item.getId())).collect(Collectors.toList());
+ dataId.equals(item.getId())).collect(Collectors.toList());
NoEStr += ",";
ToEStr += ",";
FStr += ",";
@@ -387,7 +387,7 @@
ToEStr += assessDatas.get(0).getRunTimes() != null ? assessDatas.get(0).getRunTimes().toString() : "0";
FStr += assessDatas.get(0).getFailNum() != null ? assessDatas.get(0).getFailNum().toString() : "0";
}
- }
+// }
NoEStr = NoEStr.substring(1);
ToEStr = ToEStr.substring(1);
FStr = FStr.substring(1);
@@ -406,7 +406,8 @@
sameNameGroupTag.addAttribute("nums", String.valueOf(nodeList.size()));
Element nodeTag = sameNameGroupTag.addElement("node");
nodeTag.addAttribute("name",
- nodeList.stream().map(item -> item.getDataId().toString()).collect(Collectors.joining(",")));
+ nodeList.stream().map(item -> item.getDataId().toString()+"-"+item.getDeviceNo().toString()).
+ collect(Collectors.joining(",")));
nodeTag.addAttribute("real_name", product.getSameSbName());
nodeTag.addAttribute("name_path", product.getNamePath());
if (paramData.getReliabDistribType() == 3) {
@@ -519,16 +520,17 @@
}
}
- // 鏍规嵁鍚岀被璁惧鍚嶇О杩涜鍒嗙粍澶勭悊
+ // 鏍规嵁鍚岀被璁惧鍚嶇О杩涜鍒嗙粍澶勭悊锛堟敼涓烘牴鎹甦ataId杩涜鍒嗙粍锛�
Map<String, List<ModelNode>> groupByNameMap = new HashMap<>();
for (String nodeStr : computerNodeListStr) {
ModelNode mn = modelNodeAndVnodeList.stream().filter(item ->
nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0);
String sameSbName = null;
if (mn.getDataId() != null) {
- XhProductModel product = productList.stream().filter(item ->
- mn.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
- if ("5".equals(product.getProductType())) sameSbName = product.getSameSbName();
+// XhProductModel product = productList.stream().filter(item ->
+// mn.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
+// if ("5".equals(product.getProductType())) sameSbName = product.getSameSbName();
+ sameSbName = mn.getDataId().toString();
}
if (sameSbName == null) {
List<ModelNode> list = new ArrayList<>();
@@ -680,6 +682,7 @@
NoEStr += "," + (assessData.getRunNum() != null ? assessData.getRunNum().toString() : "0");
ToEStr += "," + (assessData.getRunTimes() != null ? assessData.getRunTimes().toString() : "0");
FStr += "," + (assessData.getFailNum() != null ? assessData.getFailNum().toString() : "0");
+ break;
}
}
NoEStr = NoEStr.substring(1);
@@ -687,7 +690,8 @@
FStr = FStr.substring(1);
nodeTag.addAttribute("name",
- nodes.stream().map(item -> item.getDataId().toString()).collect(Collectors.joining(",")));
+ nodes.stream().map(item -> item.getDataId().toString()+"-"+item.getDeviceNo().toString()).
+ collect(Collectors.joining(",")));
if (distTypes.get(0) == 3) {
// 浜岄」鍒嗗竷
nodeTag.addAttribute("distType", "ber");
@@ -742,14 +746,17 @@
ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class);
if ("0".equals(rtn.getCode())) {
logger.info("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱鎴愬姛銆�");
- result = Result.ok();
+ if (exitCode ==0) {
+ deleteAssessInfoInRedis(assessResult.getId());
+ result = Result.ok();
+ } else {
+ result = Result.error("鍙潬鎬ц瘎瀹氱畻娉曞簱璁$畻澶辫触: exitCode=" + exitCode);
+ }
} else {
String errorMsg = rtn.getErrorMsg();
throw new RenException("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱澶辫触: errorMsg=" + errorMsg);
}
}
-
- deleteAssessInfoInRedis(assessResult.getId());
} catch (Exception e) {
logger.error("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱鏃跺彂鐢烢xception锛�", e);
e.printStackTrace();
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 81c21ba..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(),
@@ -1062,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());
@@ -1097,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,
@@ -1152,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