From a86c2eb2db34d2d350e5c2eb72bf6416ec89c0d2 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期二, 19 十一月 2024 11:43:03 +0800
Subject: [PATCH] 1)可靠性评定时新增模型检查处理; 2)获取任务二项分布参数时,去掉模型的匹配。

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java |  191 +++++++++++++++++------------------------------
 1 files changed, 70 insertions(+), 121 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
index f7f7290..0e5a5ad 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java
@@ -42,6 +42,8 @@
     private ParamDataDao paramDataDao;
     @Autowired
     private TaskBinoParamDao taskBinoParamDao;
+    @Autowired
+    private ReliabilityAssessDao reliabilityAssessDao;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -100,7 +102,7 @@
         List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
         // 1.8 鑾峰彇璇ヨ埞鐨勬墍鏈夎澶囧弬鏁癓ist
         List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
-        // 1.8 鑾峰彇璇ヤ换鍔$殑浜岄」鍒嗗竷鍙傛暟锛塋ist
+        // 1.8 鑾峰彇璇ヤ换鍔$殑浜岄」鍒嗗竷鍙傛暟List
         List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskId);
 
         // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬�
@@ -218,7 +220,7 @@
                                                                     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,
@@ -342,7 +344,7 @@
      * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛�
      * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull
      */
-    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<>();    // 妫�鏌ュ璞℃ā鍨嬩腑浣跨敤鍒扮殑鎵�鏈夎澶�
 
@@ -363,8 +365,8 @@
         List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
         // 1.8 鑾峰彇璇ヨ埞鐨勬墍鏈夎澶囧弬鏁癓ist
         List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
-        // 1.8 鑾峰彇璇ヤ换鍔$殑浜岄」鍒嗗竷鍙傛暟锛塋ist
-        List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskId);
+        // 1.8 鑾峰彇璇勫畾鏁版嵁List
+        List<ReliabilityAssess> assessDataList = reliabilityAssessDao.getProductList(productId, itemId);
 
         // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬�
         for (Task task : taskList) {
@@ -425,142 +427,90 @@
                         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);
+                                                                        }
                                                                     }
                                                                 }
                                                             }
@@ -575,7 +525,6 @@
                         }
                     }
                 }
-
             }
         }
         // 3. 杩斿洖妫�鏌ョ粨鏋�

--
Gitblit v1.9.1