| | |
| | | Element root = document.addElement("des"); |
| | | root.addAttribute("name", "General system"); |
| | | addTasksTag(taskPhaseModelAll, root); |
| | | addModelsTag(taskId, |
| | | addModelsTag(simulatAssess, |
| | | taskId, |
| | | productId, |
| | | product.getName(), |
| | | product.getNamePath(), |
| | |
| | | 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; |
| | | } |
| | |
| | | return taskPhases; |
| | | } |
| | | |
| | | private void addModelsTag(Long taskId, |
| | | private void addModelsTag(SimulatAssess simulatAssess, |
| | | Long taskId, |
| | | Long productId, |
| | | String productName, |
| | | String productNamePath, |
| | |
| | | "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, |
| | |
| | | } |
| | | |
| | | // 递归函数 |
| | | private void node2DOM(Long taskId, |
| | | private void node2DOM(SimulatAssess simulatAssess, |
| | | Long taskId, |
| | | TaskPhaseModel taskPhaseModel, |
| | | Long modelId, |
| | | Long productId, |
| | |
| | | "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(), |
| | |
| | | |
| | | 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()); |
| | |
| | | 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, |
| | |
| | | return failureModel; |
| | | } |
| | | |
| | | private boolean isRepairDirac(boolean repairDiracFlag, TaskPhaseModel taskPhaseModel, Long productId) { |
| | | boolean result = false; |
| | | |
| | | if (repairDiracFlag) { |
| | | if (taskPhaseModel.getPhaseConstraints() == null) { |
| | | result = true; |
| | | } else { |
| | | 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.setType(RepairModel.TYPE_DIRAC); |
| | | 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; |