仿真评估检查模型时,总体工况模型里未使用的节点,不检查其模型是否存在。
1个文件已修改
246 ■■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
@@ -145,135 +145,143 @@
                            for (OperatConditModel gkModel : gkModelTree) {
                                XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
                                        gkModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
                                if (null == gkModel.getModelId()) {
                                    // 工况模型树不完整
                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                            node, null, null, null,
                                            TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
                                } else {
                                    List<ModelRbd> modelRbds = modelRbdList.stream().filter(item ->
                                            gkModel.getModelId().equals(item.getId())).collect(Collectors.toList());
                                    if (modelRbds.size() == 0) {
                                        // 建模未完成
                                if (isNodeInRbdOfParent(node, gkModelTree, rbdNodeList)) {
                                    if (null == gkModel.getModelId()) {
                                        // 工况模型树不完整
                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                node, null, null, null,
                                                TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
                                                TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
                                    } else {
                                        if (!"已完成".equals(modelRbds.get(0).getModelState())) {
                                        List<ModelRbd> modelRbds = modelRbdList.stream().filter(item ->
                                                gkModel.getModelId().equals(item.getId())).collect(Collectors.toList());
                                        if (modelRbds.size() == 0) {
                                            // 建模未完成
                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                    node, modelRbds.get(0), null, null,
                                                    node, null, null, null,
                                                    TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
                                        } else {
                                            List<ModelNodeAlgorithm> deviceNodes = rbdNodeList.stream().filter(item ->
                                                    gkModel.getModelId().equals(item.getModelId())).collect(Collectors.toList());
                                            for (ModelNodeAlgorithm deviceNode : deviceNodes) {
                                                XhProductModel device = (XhProductModel) productTreeList.stream().filter(item ->
                                                        deviceNode.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
                                                if ("5".equals(device.getProductType())) {
                                                    // 设备
                                                    List<ParamData> params = paramDataList.stream().filter(item ->
                                                            deviceNode.getDataId().equals(item.getProductId())).collect(Collectors.toList());
                                                    if (params.size() == 0) {
                                                        // 设备参数未配置
                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                node, modelRbds.get(0), device, null,
                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                    } else {
                                                        ParamData param = params.get(0);
                                                        if (param.getReliabDistribType() == null) {
                                            if (!"已完成".equals(modelRbds.get(0).getModelState())) {
                                                // 建模未完成
                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                        node, modelRbds.get(0), null, null,
                                                        TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
                                            } else {
                                                List<ModelNodeAlgorithm> deviceNodes = rbdNodeList.stream().filter(item ->
                                                        gkModel.getModelId().equals(item.getModelId())).collect(Collectors.toList());
                                                for (ModelNodeAlgorithm deviceNode : deviceNodes) {
                                                    XhProductModel device = (XhProductModel) productTreeList.stream().filter(item ->
                                                            deviceNode.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
                                                    if ("5".equals(device.getProductType())) {
                                                        // 设备
                                                        List<ParamData> params = paramDataList.stream().filter(item ->
                                                                deviceNode.getDataId().equals(item.getProductId())).collect(Collectors.toList());
                                                        if (params.size() == 0) {
                                                            // 设备参数未配置
                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                    node, modelRbds.get(0), device, "可靠性分布类型",
                                                                    node, modelRbds.get(0), device, null,
                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                        } else {
                                                            if (param.getReliabDistribType() == 1) {
                                                                // 指数分布
                                                                if (param.getTaskMtbcfRegulate() == null) {
                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                            node, modelRbds.get(0), device, "MTBCF",
                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                }
                                                            }
                                                            if (param.getReliabDistribType() == 2) {
                                                                // 威布尔分布
                                                                if (param.getTaskMtbcfRegulate() == null) {
                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                            node, modelRbds.get(0), device, "MTBCF",
                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                }
                                                                if (param.getTaskMtbcfOtherParams2() == null) {
                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                            node, modelRbds.get(0), device, "MTBCF参数2",
                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                }
                                                                if (param.getTaskMtbcfOtherParams3() == null) {
                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                            node, modelRbds.get(0), device, "MTBCF参数3",
                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                }
                                                            }
                                                            if (param.getReliabDistribType() == 3) {
                                                                // 二项分布
                                                                List<TaskBinoParam> binoParams = binoParamList.stream().filter(item ->
                                                                        phase.getId().equals(item.getPhaseId()) &&
                                                                                taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) &&
                                                                                modelRbds.get(0).getId().equals(item.getModelId()) &&
                                                                                device.getId().equals(item.getProductId())).collect(Collectors.toList());
                                                                if (binoParams.size() == 0) {
                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                            node, modelRbds.get(0), device, "二项分布参数",
                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                } else {
                                                                    TaskBinoParam binoParam = binoParams.get(0);
                                                                    if (binoParam.getSuccessRate() == null) {
                                                            ParamData param = params.get(0);
                                                            if (param.getReliabDistribType() == null) {
                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                        node, modelRbds.get(0), device, "可靠性分布类型",
                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                            } else {
                                                                if (param.getReliabDistribType() == 1) {
                                                                    // 指数分布
                                                                    if (param.getTaskMtbcfRegulate() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "成功率",
                                                                                node, modelRbds.get(0), device, "MTBCF",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                }
                                                                if (param.getReliabDistribType() == 2) {
                                                                    // 威布尔分布
                                                                    if (param.getTaskMtbcfRegulate() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTBCF",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                    if (param.getTaskMtbcfOtherParams2() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTBCF参数2",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                    if (param.getTaskMtbcfOtherParams3() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTBCF参数3",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                }
                                                                if (param.getReliabDistribType() == 3) {
                                                                    // 二项分布
                                                                    List<TaskBinoParam> binoParams = binoParamList.stream().filter(item ->
                                                                            phase.getId().equals(item.getPhaseId()) &&
                                                                                    taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) &&
                                                                                    modelRbds.get(0).getId().equals(item.getModelId()) &&
                                                                                    device.getId().equals(item.getProductId())).collect(Collectors.toList());
                                                                    if (binoParams.size() == 0) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "二项分布参数",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    } else {
                                                                        if (binoParam.getSuccessTimes() != null && binoParam.getSimulatTimes() == null) {
                                                                        TaskBinoParam binoParam = binoParams.get(0);
                                                                        if (binoParam.getSuccessRate() == null) {
                                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                    node, modelRbds.get(0), device, "总次数",
                                                                                    node, modelRbds.get(0), device, "成功率",
                                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                        }
                                                                        if (binoParam.getSuccessTimes() == null && binoParam.getSimulatTimes() != null) {
                                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                    node, modelRbds.get(0), device, "成功次数",
                                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                        } else {
                                                                            if (binoParam.getSuccessTimes() != null && binoParam.getSimulatTimes() == null) {
                                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                        node, modelRbds.get(0), device, "总次数",
                                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                            }
                                                                            if (binoParam.getSuccessTimes() == null && binoParam.getSimulatTimes() != null) {
                                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                        node, modelRbds.get(0), device, "成功次数",
                                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                            if (1 == param.getRepairable()) {
                                                                // 可维修
                                                                if (param.getRepairDistribType() == null) {
                                                                if (param.getRepairable() == null) {
                                                                    setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                            node, modelRbds.get(0), device, "维修分布类型",
                                                                            node, modelRbds.get(0), device, "是否可维修",
                                                                            TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                }
                                                                if (param.getRepairDistribType() == 1) {
                                                                    // 指数分布
                                                                    if (param.getRepairMttcr() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTTCR",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                }
                                                                if (param.getRepairDistribType() == 2) {
                                                                    // 威布尔分布
                                                                    if (param.getRepairMttcr() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTTCR",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                    if (param.getRepairMttcrOtherParams2() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTTCR参数2",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                    }
                                                                    if (param.getRepairMttcrOtherParams3() == null) {
                                                                        setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                node, modelRbds.get(0), device, "MTTCR参数3",
                                                                                TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                } else {
                                                                    if (1 == param.getRepairable()) {
                                                                        // 可维修
                                                                        if (param.getRepairDistribType() == null) {
                                                                            setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                    node, modelRbds.get(0), device, "维修分布类型",
                                                                                    TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                        }
                                                                        if (param.getRepairDistribType() == 1) {
                                                                            // 指数分布
                                                                            if (param.getRepairMttcr() == null) {
                                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                        node, modelRbds.get(0), device, "MTTCR",
                                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                            }
                                                                        }
                                                                        if (param.getRepairDistribType() == 2) {
                                                                            // 威布尔分布
                                                                            if (param.getRepairMttcr() == null) {
                                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                        node, modelRbds.get(0), device, "MTTCR",
                                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                            }
                                                                            if (param.getRepairMttcrOtherParams2() == null) {
                                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                        node, modelRbds.get(0), device, "MTTCR参数2",
                                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                            }
                                                                            if (param.getRepairMttcrOtherParams3() == null) {
                                                                                setTaskModelCheckResult(task, phase, taskPhaseModel,
                                                                                        node, modelRbds.get(0), device, "MTTCR参数3",
                                                                                        TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
@@ -296,6 +304,26 @@
    }
    private boolean isNodeInRbdOfParent(XhProductModel node,
                                        List<OperatConditModel> gkModelTree,
                                        List<ModelNodeAlgorithm> rbdNodeList) {
        boolean result = false;
        List<OperatConditModel> parents = gkModelTree.stream().filter(item ->
                item.getProductId().equals(node.getPid())).collect(Collectors.toList());
        if (parents.size() > 0) {
            OperatConditModel parent = parents.get(0);
            if (parent.getModelId() != null) {
                List<ModelNodeAlgorithm> nodes = rbdNodeList.stream().filter(item ->
                        item.getModelId().equals(parent.getModelId()) && item.getDataId().equals(node.getId())).collect(Collectors.toList());
                if (nodes.size() > 0) {
                    result = true;
                }
            }
        }
        return result;
    }
    /**
     * 可靠性评定:对任务可靠性模型、参数配置、可靠性评定数据进行完整性检查,并指出以下11类错误:
     * 1)任务总时长未配置