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 = "产品结构树节点ID(当前未使用)") 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; 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 @@ } } // 根据同类设备名称进行分组处理 // 根据同类设备名称进行分组处理(改为根据dataId进行分组) 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("启动可靠性评定算法库成功。"); 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("启动可靠性评定算法库时发生Exception:", e); e.printStackTrace(); 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;