| | |
| | | private ParamDataDao paramDataDao; |
| | | @Autowired |
| | | private TaskBinoParamDao taskBinoParamDao; |
| | | @Autowired |
| | | private ReliabilityAssessDao reliabilityAssessDao; |
| | | |
| | | /** |
| | | * 分页查询 |
| | |
| | | List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes(); |
| | | // 1.8 获取该船的所有设备参数List |
| | | List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId); |
| | | // 1.8 获取该任务的二项分布参数)List |
| | | // 1.8 获取该任务的二项分布参数List |
| | | List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskId); |
| | | |
| | | // 2. 检查每个任务模型的数据完整性 |
| | |
| | | List<TaskBinoParam> binoParams = binoParamList.stream().filter(item -> |
| | | phase.getId().equals(item.getPhaseId()) && |
| | | taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) && |
| | | modelRbds.get(0).getId().equals(item.getModelId()) && |
| | | // modelRbds.get(0).getId().equals(item.getModelId()) && |
| | | device.getId().equals(item.getProductId())).collect(Collectors.toList()); |
| | | if (binoParams.size() == 0) { |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | |
| | | * @param productId 产品节点ID(一般为总体) |
| | | * @return 检查出的错误的List,长度为0表示没有错误,不会返回null |
| | | */ |
| | | public List<TaskModelCheckResultDto> checkTaskModelAssess(Long productId, Long taskId) { |
| | | public List<TaskModelCheckResultDto> checkTaskModelAssess(Long productId, Long taskId, Long itemId) { |
| | | List<TaskModelCheckResultDto> checkResult = new ArrayList<>(); |
| | | List<XhProductModel> deviceUsedList = new ArrayList<>(); // 检查对象模型中使用到的所有设备 |
| | | |
| | |
| | | List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes(); |
| | | // 1.8 获取该船的所有设备参数List |
| | | List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId); |
| | | // 1.8 获取该任务的二项分布参数)List |
| | | List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskId); |
| | | // 1.8 获取评定数据List |
| | | List<ReliabilityAssess> assessDataList = reliabilityAssessDao.getProductList(productId, itemId); |
| | | |
| | | // 2. 检查每个任务模型的数据完整性 |
| | | for (Task task : taskList) { |
| | |
| | | for (OperatConditModel gkModel : gkModelTree) { |
| | | XhProductModel node = productTreeList.stream().filter(item -> |
| | | gkModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0); |
| | | if (null == gkModel.getModelId()) { |
| | | // 2.6 工况模型树不完整 |
| | | 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) { |
| | | // 2.7 建模未完成 |
| | | if (isNodeInRbdOfParent(node, gkModelTree, rbdNodeList)) { |
| | | if (null == gkModel.getModelId()) { |
| | | // 2.6 工况模型树不完整 |
| | | 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) { |
| | | // 2.7 建模未完成 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), null, null, |
| | | node, null, null, null, |
| | | TaskModelCheckResultDto.CATEGORY_MODEL, checkResult); |
| | | } else { |
| | | List<Algorithm> algorithmList = algorithmDao.getListByModelId(gkModel.getModelId()); |
| | | if (hasNotSupportModel(algorithmList)) { |
| | | // 2.8 目前不支持串联、并联和表决以外的模型 |
| | | if (!"已完成".equals(modelRbds.get(0).getModelState())) { |
| | | // 2.7 建模未完成 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), null, null, |
| | | TaskModelCheckResultDto.CATEGORY_MODEL_NOT_SUPPORT, checkResult); |
| | | 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) { |
| | | List<Algorithm> algorithmList = algorithmDao.getListByModelId(gkModel.getModelId()); |
| | | if (hasNotSupportModel(algorithmList)) { |
| | | // 2.8 目前不支持串联、并联和表决以外的模型 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), null, null, |
| | | TaskModelCheckResultDto.CATEGORY_MODEL_NOT_SUPPORT, 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) { |
| | | // 2.9 设备参数未配置 |
| | | 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) { |
| | | 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 && param.getReliabDistribType() != 3) { |
| | | // 2.10 目前不支持二项分布和指数分布以外的分布类型 |
| | | 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); |
| | | node, modelRbds.get(0), device, "可靠性分布类型", |
| | | TaskModelCheckResultDto.CATEGORY_DISTRIBUTION_NOT_SUPPORT, checkResult); |
| | | } else { |
| | | TaskBinoParam binoParam = binoParams.get(0); |
| | | if (binoParam.getSuccessRate() == null) { |
| | | List<ReliabilityAssess> assessDatas = assessDataList.stream().filter(item -> |
| | | item.getId().equals(device.getId())).collect(Collectors.toList()); |
| | | if (assessDatas.size() ==0) { |
| | | // 2.11 评定数据未录入 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), device, "成功率", |
| | | TaskModelCheckResultDto.CATEGORY_PARAM, checkResult); |
| | | node, modelRbds.get(0), device, null, |
| | | TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult); |
| | | } else { |
| | | if (binoParam.getSuccessTimes() != null && binoParam.getSimulatTimes() == null) { |
| | | ReliabilityAssess assessData = assessDatas.get(0); |
| | | if (assessData.getFailNum() == null || assessData.getFailNum() == 0) { |
| | | // 2.11 评定数据未录入 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), device, "总次数", |
| | | TaskModelCheckResultDto.CATEGORY_PARAM, checkResult); |
| | | node, modelRbds.get(0), device, "故障次数", |
| | | TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult); |
| | | } |
| | | if (binoParam.getSuccessTimes() == null && binoParam.getSimulatTimes() != null) { |
| | | if (param.getReliabDistribType() == 1 && |
| | | (assessData.getRunTimes() == null || assessData.getRunTimes() == 0.0)) { |
| | | // 2.11 评定数据未录入 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), device, "成功次数", |
| | | TaskModelCheckResultDto.CATEGORY_PARAM, checkResult); |
| | | node, modelRbds.get(0), device, "试验时间", |
| | | TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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); |
| | | if (param.getReliabDistribType() == 3 && |
| | | (assessData.getRunNum() == null || assessData.getRunNum() == 0.0)) { |
| | | // 2.11 评定数据未录入 |
| | | setTaskModelCheckResult(task, phase, taskPhaseModel, |
| | | node, modelRbds.get(0), device, "试验次数", |
| | | TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | // 3. 返回检查结果 |