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(),
@@ -1027,9 +1036,10 @@
                        failureModels, repairModels);
            } else if ("5".equals(product.getProductType())) {
                // 设备
                Integer deviceNo = node.getDeviceNo();
                Element nodeTag = parent.addElement("node");
                nodeTag.addAttribute("name", dataId.toString());
                nodeTag.addAttribute("real_name", product.getName());
                nodeTag.addAttribute("name", deviceNo == 0 ? dataId.toString() : dataId.toString()+"-"+deviceNo);
                nodeTag.addAttribute("real_name", deviceNo == 0 ? product.getName() : product.getName()+"-"+deviceNo);
                nodeTag.addAttribute("name_path", product.getNamePath());
                nodeTag.addAttribute("type", "node");
@@ -1061,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());
@@ -1096,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,
@@ -1151,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;