From 275125ec506507e7a644ab3b3079f618c64d1fea Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期五, 20 九月 2024 10:23:21 +0800
Subject: [PATCH] 修改

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java |  208 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 206 insertions(+), 2 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 3a796df..c0d7577 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
@@ -1,12 +1,22 @@
 package com.zt.life.modules.mainPart.taskReliability.service;
 
 import com.zt.common.service.BaseService;
-import com.zt.life.modules.mainPart.taskReliability.dao.TaskDao;
-import com.zt.life.modules.mainPart.taskReliability.model.Task;
+import com.zt.life.modules.mainPart.basicInfo.dao.ParamDataDao;
+import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao;
+import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
+import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
+import com.zt.life.modules.mainPart.taskReliability.dao.*;
+import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResultDto;
+import com.zt.life.modules.mainPart.taskReliability.model.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zt.common.db.query.QueryFilter;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -17,6 +27,19 @@
  */
 @Service
 public class TaskService  extends BaseService<TaskDao, Task> {
+
+    @Autowired
+    private OperatConditModelDao operatConditModelDao;
+    @Autowired
+    private ModelNodeAlgorithmDao modelNodeAlgorithmDao;
+    @Autowired
+    private ModelRbdDao modelRbdDao;
+    @Autowired
+    private XhProductModelDao xhProductModelDao;
+    @Autowired
+    private ParamDataDao paramDataDao;
+    @Autowired
+    private TaskBinoParamDao taskBinoParamDao;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -37,4 +60,185 @@
         super.deleteLogic(ids);
     }
 
+    public List<Task> getTaskList(Long productId) {
+        return  baseDao.getTaskList(productId);
+    }
+
+    /**
+     * 瀵逛换鍔″彲闈犳�фā鍨嬪強鍏跺弬鏁伴厤缃繘琛屽畬鏁存�ф鏌ワ紝骞舵寚鍑轰互涓�5绫婚敊璇細
+     * 0锛変换鍔℃�绘椂闀挎湭閰嶇疆
+     * 1锛夐樁娈垫椂闀挎湭閰嶇疆
+     * 2锛夊伐鍐垫椂闀挎湭閰嶇疆
+     * 3锛夊伐鍐垫ā鍨嬫爲涓嶅畬鏁�
+     * 4锛夊缓妯℃湭瀹屾垚
+     * 5锛夎澶囧弬鏁版湭閰嶇疆
+     * 鍙互瀵规墍鏈変换鍔℃ā鍨嬭繘琛屾鏌ワ紝涔熷彲浠ュ彧妫�鏌ュ叆鍙傛寚瀹氱殑浜у搧鑺傜偣涓嬬殑浠诲姟妯″瀷锛涘墠鑰呴�傚悎鍦ㄩ〉闈㈠垪琛ㄦ樉绀哄叏浣撳缓妯$姸鎬侊紝鍚庤�呴�傚悎瀵规煇浠诲姟杩涜浠跨湡鏃剁殑妫�鏌ャ��
+     * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛�
+     * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull
+     */
+    public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskModelId) {
+        List<TaskModelCheckResultDto> checkResult = new ArrayList<>();
+        List<XhProductModel> deviceUsedList = new ArrayList<>();    // 妫�鏌ュ璞℃ā鍨嬩腑浣跨敤鍒扮殑鎵�鏈夎澶�
+
+        // 1. 鑾峰彇鏁版嵁
+        // 1.1 鑾峰彇鎵�鏈変换鍔℃ā鍨嬫暟鎹甃ist
+        List<Task> taskModelList = baseDao.getTaskModels(productId, taskModelId);
+        // 1.2 鑾峰彇鎵�鏈変换鍔℃ā鍨嬮樁娈垫暟鎹甃ist
+        List<TaskPhase> taskModelPhaseList = baseDao.getTaskModelPhases(productId, taskModelId);
+        // 1.3 鑾峰彇鎵�鏈変换鍔℃ā鍨嬪伐鍐垫暟鎹甃ist
+        List<TaskPhaseModel> taskModelPhaseModelList = baseDao.getTaskModelPhaseModels(productId, taskModelId);
+        // 1.4 鑾峰彇浜у搧缁撴瀯鏍戠粨鏋勬暟鎹�
+        List<XhProductModel> productTreeList = xhProductModelDao.getProductTree(productId);
+        // 1.5 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁
+        List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
+        // 1.6 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁List
+        List<OperatConditModel> gkModelList = operatConditModelDao.getGKModelTrees(productId);
+        // 1.7 鑾峰彇鎵�鏈塕BD鏁版嵁List
+        Map<String, Object> mapFilter = new HashMap<>();
+        mapFilter.put("productId", productId);
+        List<ModelRbd> modelRbdList = modelRbdDao.getList(mapFilter);
+        // 1.8 鑾峰彇鎵�鏈夎澶囧弬鏁帮紙鍚换鍔℃ā鍨嬬殑浜岄」鍒嗗竷鍙傛暟锛塋ist
+        List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
+        List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskModelId);
+
+        // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬э紙閫掑綊锛�
+        for (Task taskModel : taskModelList) {
+            if (null == taskModel.getTaskDuration() || 0.0 == taskModel.getTaskDuration()) {
+                // 2.1 浠诲姟鎬绘椂闀挎湭閰嶇疆
+                setTaskModelCheckResult(taskModel,
+                        null,
+                        null, null, null,
+                        TaskModelCheckResultDto.CATEGORY_TASK_TIME, checkResult);
+            }
+            List<TaskPhase> phases = taskModelPhaseList.stream().filter(item ->
+                    taskModel.getId().equals(item.getTaskId())).collect(Collectors.toList());
+            for (TaskPhase phase : phases) {
+                if (null == phase.getPhaseDurationRate() || 0.0 == phase.getPhaseDurationRate()) {
+                    // 2.2 闃舵鏃堕暱鏈厤缃�
+                    setTaskModelCheckResult(taskModel,
+                            phase,
+                            null, null, null,
+                            TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult);
+                }
+                List<TaskPhaseModel> phaseModels = taskModelPhaseModelList.stream().filter(item ->
+                        phase.getId().equals(item.getPhaseId())).collect(Collectors.toList());
+                if (phaseModels.size() <= 0) {
+                    // 鏃犲伐鍐垫ā鍨嬫暟鎹�
+                    // 2.3 宸ュ喌鏃堕暱鏈厤缃�
+                    setTaskModelCheckResult(taskModel,
+                            phase,
+                            null, null, null,
+                            TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
+                } else {
+                    // 鏈夊伐鍐垫ā鍨嬫暟鎹�
+                    List<TaskPhaseModel> phaseModelWithDurations = taskModelPhaseModelList.stream().filter(item ->
+                            0.0 != item.getOperatConditDurationRate()).collect(Collectors.toList());
+                    if (phaseModelWithDurations.size() <= 0) {
+                        // 鏃犲伐鍐垫ā鍨嬭閫夌敤
+                        // 2.3 宸ュ喌鏃堕暱鏈厤缃�
+                        for (TaskPhaseModel taskPhaseModel : phaseModels) {
+                            setTaskModelCheckResult(taskModel,
+                                    phase,
+                                    taskPhaseModel,
+                                    null, null,
+                                    TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
+                        }
+                    } else {
+                        // 鏈夊伐鍐垫ā鍨嬭閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐垫ā鍨�
+                        for (TaskPhaseModel taskPhaseModel : phaseModelWithDurations) {
+                            // 棣栧厛鎵惧埌椤跺眰妯″瀷
+                            List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item ->
+                                    taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())
+                                            && taskModel.getProductId().equals(item.getProductId())).collect(Collectors.toList());
+                            if (gkModelTops.size() <= 0) {
+                                // 鏃犲伐鍐垫ā鍨嬫爲鏍硅妭鐐癸紝鍗虫剰鍛崇潃鏃犲伐鍐垫ā鍨嬫爲
+                                XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
+                                        taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+                                setTaskModelCheckResult(taskModel,
+                                        phase,
+                                        taskPhaseModel,
+                                        null,
+                                        node,
+                                        TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+                            } else {
+                                // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬�
+//                                checkGkModel(taskModel, phase, taskPhaseModel, gkModelTops.get(0),
+//                                        deviceUsedList, checkResult);
+                            }
+                        }
+                    }
+                }
+
+            }
+        }
+        // 3. 杩斿洖妫�鏌ョ粨鏋�
+        return checkResult;
+
+    }
+
+    // 閫掑綊鍑芥暟
+    private void checkGkModel(Task taskModel,
+                              TaskPhase phase,
+                              TaskPhaseModel taskPhaseModel,
+                              OperatConditModel gkModelTreeTop,
+                              List<OperatConditModel> gkModelList,
+                              List<ModelNodeAlgorithm> rbdNodeList,
+                              List<XhProductModel> productTreeList,
+                              List<XhProductModel> deviceUsedList,
+                              List<TaskModelCheckResultDto> checkResult) {
+        // 棣栧厛鎵惧埌椤跺眰妯″瀷
+        List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item ->
+                taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())
+                        && taskModel.getProductId().equals(item.getProductId())).collect(Collectors.toList());
+        if (gkModelTops.size() <= 0) {
+            // 宸ュ喌妯″瀷鏍戜笉瀹屾暣锛堥《灞傝妭鐐规湭閰嶇疆妯″瀷锛�
+            XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
+                    taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+            setTaskModelCheckResult(taskModel,
+                    phase,
+                    taskPhaseModel,
+                    null,
+                    node,
+                    TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+        }
+    }
+
+    private void setTaskModelCheckResult(Task taskModel,
+                                         TaskPhase taskModelPhase,
+                                         TaskPhaseModel taskModelPhaseModel,
+                                         OperatConditModel gkModel,
+                                         XhProductModel node,
+                                         String category,
+                                         List<TaskModelCheckResultDto> checkResult) {
+        TaskModelCheckResultDto result = new TaskModelCheckResultDto();
+        result.setCategory(category);
+        result.setProductId(taskModel.getProductId());
+        result.setTaskModelId(taskModel.getId());
+        result.setTaskModelName(taskModel.getTaskName());
+        switch(category) {
+            case TaskModelCheckResultDto.CATEGORY_TASK_TIME:
+                break;
+            case TaskModelCheckResultDto.CATEGORY_PHASE_TIME:
+                result.setTaskModelPhaseId(taskModelPhase.getId());
+                result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
+                break;
+            case TaskModelCheckResultDto.CATEGORY_GK_TIME:
+                result.setTaskModelPhaseId(taskModelPhase.getId());
+                result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
+                if (null != taskModelPhaseModel) {
+                    result.setGkId(taskModelPhaseModel.getOperatConditId());
+                    result.setGkName(taskModelPhaseModel.getOperatConditName());
+                }
+                break;
+            case TaskModelCheckResultDto.CATEGORY_GK_MODEL:
+                result.setTaskModelPhaseId(taskModelPhase.getId());
+                result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
+                result.setGkId(taskModelPhaseModel.getOperatConditId());
+                result.setGkName(taskModelPhaseModel.getOperatConditName());
+                result.setNodeId(node.getId());
+                result.setNodeName(node.getName());
+                break;
+        }
+        checkResult.add(result);
+    }
 }

--
Gitblit v1.9.1