From ecd2f8acec4e743e18d978b7e0a1bb92bd17e70e Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期二, 13 八月 2024 15:38:25 +0800
Subject: [PATCH] 修改仿真后台

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java |  130 ++++++++++++++++-----
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskRepairParamDao.java       |    3 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePairDto.java         |    2 
 modules/mainPart/src/main/resources/mapper/taskReliability/TaskRepairParamDao.xml                             |   57 ++++++++-
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java     |   22 +--
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java          |   32 ++--
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java  |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java   |   41 ++++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java    |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java  |   22 ---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java         |    7 
 11 files changed, 222 insertions(+), 100 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java
index ed86acf..17ac4eb 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java
@@ -11,7 +11,7 @@
 import com.zt.common.validator.group.AddGroup;
 import com.zt.common.validator.group.DefaultGroup;
 import com.zt.common.validator.group.UpdateGroup;
-import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResult;
+import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResultDto;
 import com.zt.life.modules.mainPart.taskReliability.model.Task;
 import com.zt.life.modules.mainPart.taskReliability.service.TaskService;
 import io.swagger.annotations.Api;
@@ -65,7 +65,7 @@
 
     @GetMapping("checkTaskModel")
     @ApiOperation("浠诲姟妯″瀷瀹屾暣鎬ф鏌�")
-    public Result<List<TaskModelCheckResult>> checkTaskModel(Long productId){
+    public Result<List<TaskModelCheckResultDto>> checkTaskModel(Long productId){
 //        List<TaskModelCheckResult> checkResult = taskService.checkTaskModel(productId);
 //        return Result.ok(checkResult);
         return Result.ok();
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskRepairParamDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskRepairParamDao.java
index 2f9442c..eef55b8 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskRepairParamDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskRepairParamDao.java
@@ -1,6 +1,7 @@
 package com.zt.life.modules.mainPart.taskReliability.dao;
 
 import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.mainPart.taskReliability.dto.TaskPhaseConstraintDto;
 import com.zt.life.modules.mainPart.taskReliability.model.TaskRepairParam;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -19,6 +20,6 @@
 public interface TaskRepairParamDao extends BaseDao<TaskRepairParam> {
 
     List<TaskRepairParam> getList(Map<String, Object> params);
-    List<TaskRepairParam> getTaskRepairParams(Long taskModelId);
+    List<TaskPhaseConstraintDto> getTaskRepairConstraints(Long taskId, Long phaseId, Long gkId);
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePair.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePairDto.java
similarity index 86%
rename from modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePair.java
rename to modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePairDto.java
index 04562fc..7aaa5b3 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePair.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePairDto.java
@@ -4,7 +4,7 @@
 import lombok.Data;
 
 @Data
-public class ModelLinePair {
+public class ModelLinePairDto {
     private ModelLine line1;
     private ModelLine line2;
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
similarity index 96%
rename from modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java
rename to modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
index b7d307c..8501008 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
@@ -3,7 +3,7 @@
 import lombok.Data;
 
 @Data
-public class TaskModelCheckResult {
+public class TaskModelCheckResultDto {
     public final static String CATEGORY_TASK_TIME = "浠诲姟鎬绘椂闀挎湭閰嶇疆";
     public final static String CATEGORY_PHASE_TIME = "闃舵鏃堕暱鏈厤缃�";
     public final static String CATEGORY_GK_TIME = "宸ュ喌鏃堕暱鏈厤缃�";
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java
new file mode 100644
index 0000000..704a9a4
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java
@@ -0,0 +1,41 @@
+package com.zt.life.modules.mainPart.taskReliability.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * TaskRepairConstraintDto
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-08-07
+ */
+@Data
+public class TaskPhaseConstraintDto {
+	@ApiModelProperty(value = "浠诲姟ID")
+	private Long taskId;
+
+	@ApiModelProperty(value = "闃舵id")
+	private Long phaseId;
+
+	@ApiModelProperty(value = "宸ュ喌妯″瀷id锛堝綋鍓嶆湭浣跨敤锛�")
+	private Long gkModelId;
+
+	@ApiModelProperty(value = "浜у搧缁撴瀯鏍戣妭鐐笽D锛堝綋鍓嶆湭浣跨敤锛�")
+	private Long nodeId;
+
+	@ApiModelProperty(value = "妯″瀷id锛堝綋鍓嶆湭浣跨敤锛�")
+	private Long modelId;
+
+	@ApiModelProperty(value = "璁惧绫诲瀷")
+	private String equipType;
+
+	@ApiModelProperty(value = "鐘舵��")
+	private Integer status;
+
+	@ApiModelProperty(value = "璁惧ID")
+	private Long productId;
+
+	@ApiModelProperty(value = "璁惧鍚嶇О")
+	private String productName;
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java
index 29f5673..d1e0d80 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java
@@ -3,13 +3,11 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.zt.common.entity.BusiEntity;
-import com.zt.common.entity.TreeNode;
-import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
+import com.zt.life.modules.mainPart.taskReliability.dto.TaskPhaseConstraintDto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -52,5 +50,8 @@
 	@TableField(exist = false)
 	private double operatConditDuration;
 
+	@ApiModelProperty(value = "闃舵绾︽潫")
+	@TableField(exist = false)
+	private List<TaskPhaseConstraintDto> phaseConstraints;
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
index 398b57f..d9f6b39 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
@@ -7,24 +7,16 @@
 import com.zt.common.utils.UUIDUtil;
 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.ProductImg;
-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.ModelLinePair;
+import com.zt.life.modules.mainPart.taskReliability.dto.ModelLinePairDto;
 import com.zt.life.modules.mainPart.taskReliability.model.*;
 import org.apache.commons.lang3.StringUtils;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zt.common.db.query.QueryFilter;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.StringWriter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -736,8 +728,8 @@
             List<ModelLine> lines = modelLineList.stream().filter(item ->
                     item.getEndCell().equals(startNode.getPicId())).collect(Collectors.toList());
             if (lines.size()<2) continue;
-            List<ModelLinePair> linePairs = getLinePairs(lines);
-            for (ModelLinePair linePair : linePairs) {
+            List<ModelLinePairDto> linePairs = getLinePairs(lines);
+            for (ModelLinePairDto linePair : linePairs) {
                 hasSimplifiedMe = simplifyBridgeOneLinePair(modelId, modelNodeList, modelLineList,
                         algorithmList, modelNodeAndVnodeList, startNode, linePair);
                 if (hasSimplifiedMe) {
@@ -756,7 +748,7 @@
                                               List<Algorithm> algorithmList,
                                               List<ModelNode> modelNodeAndVnodeList,
                                               ModelNode startNode,
-                                              ModelLinePair linePair) {
+                                              ModelLinePairDto linePair) {
         ModelNode node1 = null;
         ModelNode node2 = null;
         ModelNode node3 = null;
@@ -967,11 +959,11 @@
     }
 
     // 鎵惧嚭鎵�鏈�2鏍圭嚎鐨勭粍鍚�
-    private List<ModelLinePair> getLinePairs(List<ModelLine> lines) {
-        List<ModelLinePair> linePairs = new ArrayList<>();
+    private List<ModelLinePairDto> getLinePairs(List<ModelLine> lines) {
+        List<ModelLinePairDto> linePairs = new ArrayList<>();
         for (int i=0; i<lines.size()-1; i++) {
             for (int j=i+1; j<lines.size(); j++) {
-                ModelLinePair linePair = new ModelLinePair();
+                ModelLinePairDto linePair = new ModelLinePairDto();
                 linePair.setLine1(lines.get(i));
                 linePair.setLine2(lines.get(j));
                 linePairs.add(linePair);
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java
index d9ff88a..83db7f2 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java
@@ -1,32 +1,10 @@
 package com.zt.life.modules.mainPart.taskReliability.service;
 
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import com.zt.common.db.query.QueryFilter;
 import com.zt.common.service.BaseService;
-import com.zt.common.utils.JsonUtils2;
 import com.zt.common.utils.UUIDUtil;
-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.ProductImg;
-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.ModelLinePair;
 import com.zt.life.modules.mainPart.taskReliability.model.*;
-import org.apache.commons.lang3.StringUtils;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.io.StringWriter;
-import java.util.*;
-import java.util.stream.Collectors;
 
 
 /**
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
index 10595e9..ec36a1c 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
@@ -17,7 +17,8 @@
 import com.zt.life.modules.mainPart.taskReliability.dao.SimulatAssessDao;
 import com.zt.life.modules.mainPart.taskReliability.dao.TimeDiagramDao;
 import com.zt.life.modules.mainPart.taskReliability.dto.ProductStatusDto;
-import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResult;
+import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResultDto;
+import com.zt.life.modules.mainPart.taskReliability.dto.TaskPhaseConstraintDto;
 import com.zt.life.modules.mainPart.taskReliability.model.*;
 import com.zt.life.modules.mainPart.utils.GetStringSpace;
 import org.dom4j.Document;
@@ -675,7 +676,7 @@
     public Result simulate(SimulatAssess simulatAssess) {
         Result result = null;
         // 1. 妫�鏌ユā鍨嬪畬鏁存��
-        List<TaskModelCheckResult> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(),
+        List<TaskModelCheckResultDto> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(),
                 simulatAssess.getTaskModelId());
         if (chkResult.size() > 0) {
             result = Result.error("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�");
@@ -782,7 +783,6 @@
         Long taskId = simulatAssess.getTaskModelId();
         Task task = taskService.get(taskId);
         List<TaskBinoParam> binoParams = taskBinoParamDao.getBinoParams(taskId);
-        List<TaskRepairParam> taskRepairParams = taskRepairParamDao.getTaskRepairParams(taskId);
 
         // 1. 璁$畻鍚勪换鍔¢樁娈电殑杩愯鏃堕暱
         List<TaskPhase> taskPhases = calcTaskPhaseDuration(task);
@@ -801,12 +801,12 @@
             Element root = document.addElement("des");
             root.addAttribute("name", "General system");
             addTasksTag(taskPhaseModelAll, root);
-            addModelsTag(productId,
+            addModelsTag(taskId,
+                    productId,
                     productList,
                     paramDataList,
                     taskPhaseModelAll,
                     binoParams,
-                    taskRepairParams,
                     root,
                     failureModels, repairModels);
             addFailureModelsTag(failureModels, root);
@@ -854,7 +854,8 @@
             satpm.setPhaseName(phase.getPhaseName());
             satpm.setPhaseDurationRate(phase.getPhaseDurationRate());
             satpm.setPhaseDuration(phase.getPhaseDuration());
-            satpm.setPhaseConstraint(null); // TODO
+            satpm.setPhaseConstraint(tpm.getPhaseConstraints().stream().map(item ->
+                    item.getProductId().toString()).collect(Collectors.joining(",")));
             satpm.setGkId(tpm.getOperatConditId());
             satpm.setGkName(tpm.getOperatConditName());
             satpm.setGkDurationRate(tpm.getOperatConditDurationRate());
@@ -871,6 +872,11 @@
             Element taskTag = tasksTag.addElement("task");
             taskTag.addAttribute("duration", String.valueOf(taskPhaseModel.getOperatConditDuration()));
             taskTag.addAttribute("model", taskPhaseModel.getOperatConditId().toString());
+            if (null != taskPhaseModel.getPhaseConstraints() && taskPhaseModel.getPhaseConstraints().size() > 0) {
+                taskTag.addAttribute("NAM",
+                        taskPhaseModel.getPhaseConstraints().stream().map(item ->
+                                item.getProductId().toString()).collect(Collectors.joining(",")));
+            }
         }
     }
 
@@ -902,7 +908,7 @@
                     ele.addAttribute("value", String.valueOf(failureModel.getParam3()));
                     break;
                 case FailureModel.TYPE_FIX:
-                    ele = failureModelTag.addElement("unreliability");
+                    ele = failureModelTag.addElement("reliability");
                     ele.addAttribute("value", String.valueOf(failureModel.getParam1()));
                     break;
                 default:
@@ -945,6 +951,10 @@
             double duration = taskPhase.getPhaseDuration() * taskPhaseModel.getOperatConditDurationRate() / totalRate;
             taskPhaseModel.setOperatConditDuration(duration);
             sum += duration;
+
+            List<TaskPhaseConstraintDto> taskRepairConstraints = taskRepairParamDao.getTaskRepairConstraints(taskPhase.getTaskId(),
+                    taskPhaseModel.getPhaseId(), taskPhaseModel.getOperatConditId());
+            taskPhaseModel.setPhaseConstraints(taskRepairConstraints);
             taskPhaseModelAll.add(taskPhaseModel);
         }
         // 鎶婇浂澶磋ˉ鍒版渶鍚庝竴涓伐鍐垫ā鍨�
@@ -968,12 +978,12 @@
         return taskPhases;
     }
 
-    private void addModelsTag(Long productId,
+    private void addModelsTag(Long taskId,
+                              Long productId,
                               List<XhProductModel> productList,
                               List<ParamData> paramDataList,
                               List<TaskPhaseModel> taskPhaseModelAll,
                               List<TaskBinoParam> binoParams,
-                              List<TaskRepairParam> taskRepairParams,
                               Element root,
                               List<FailureModel> failureModels,
                               List<RepairModel> repairModels) {
@@ -992,28 +1002,32 @@
                     "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(productId,
+            node2DOM(taskId,
+                    taskPhaseModel,
+                    gkModelTop.getModelId(),
+                    productId,
                     productList,
                     paramDataList,
                     gkModelsAssembled,
                     algorithmList,
                     modelNodeAndVnodeList,
                     binoParams,
-                    taskRepairParams,
                     computerNode, modelTag,
                     failureModels, repairModels);
         }
     }
 
     // 閫掑綊鍑芥暟
-    private void node2DOM(Long productId,
+    private void node2DOM(Long taskId,
+                          TaskPhaseModel taskPhaseModel,
+                          Long modelId,
+                          Long productId,
                           List<XhProductModel> productList,
                           List<ParamData> paramDataList,
                           List<OperatConditModel> gkModelsAssembled,
                           List<Algorithm> algorithmList,
                           List<ModelNode> modelNodeAndVnodeList,
                           List<TaskBinoParam> binoParams,
-                          List<TaskRepairParam> taskRepairParams,
                           ModelNode node,
                           Element parent,
                           List<FailureModel> failureModels,
@@ -1032,37 +1046,53 @@
                         "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(product.getId(),
+                node2DOM(taskId,
+                        taskPhaseModel,
+                        gkModel.getModelId(),
+                        product.getId(),
                         productList,
                         paramDataList,
                         gkModelsAssembled,
                         algorithmListSub,
                         modelNodeAndVnodeListSub,
                         binoParams,
-                        taskRepairParams,
                         computerNode, parent,
                         failureModels, repairModels);
             } else if ("5".equals(product.getProductType())) {
                 // 璁惧
-                ParamData paramData = paramDataList.stream().filter(item ->
-                        dataId.equals(item.getProductId())).collect(Collectors.toList()).get(0);
                 Element nodeTag = parent.addElement("node");
                 nodeTag.addAttribute("name", dataId.toString());
                 nodeTag.addAttribute("type", "node");
 
-                FailureModel failureModel = new FailureModel();
-                failureModel.setId(UUIDUtil.generateId());
-                failureModel.setType(FailureModel.TYPE_EXP);
-                failureModel.setParam1(1.0 / paramData.getTaskMtbcfRegulate());
+                ParamData paramData = paramDataList.stream().filter(item ->
+                        dataId.equals(item.getProductId())).collect(Collectors.toList()).get(0);
+                Double ratio = paramData.getTaskMtbcfOperatingRatio();
+                if (null != ratio && ratio > 0) {
+                    // 闂存柇鍨嬭澶囩殑澶勭悊
+                    double cycon = taskPhaseModel.getOperatConditDuration() * ratio;
+                    double cycdown = taskPhaseModel.getOperatConditDuration() - cycon;
+                    nodeTag.addAttribute("cycon", String.valueOf(cycon));
+                    nodeTag.addAttribute("cycdown", String.valueOf(cycdown));
+                }
+                TaskBinoParam taskBinoParam = null;
+                if (3 == paramData.getReliabDistribType()) {
+                    // 浜岄」鍒嗗竷澶勭悊
+                    taskBinoParam = binoParams.stream()
+                            .filter(item -> taskId.equals(item.getTaskId()))
+                            .filter(item -> taskPhaseModel.getPhaseId().equals(item.getPhaseId()))
+                            .filter(item -> taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()))
+                            .filter(item -> modelId.equals(item.getModelId()))
+                            .filter(item -> dataId.equals(item.getProductId()))
+                            .collect(Collectors.toList()).get(0);
+                }
+                FailureModel failureModel = createFailureModel(paramData, taskBinoParam);
                 failureModels.add(failureModel);
-
                 Element failureTag = nodeTag.addElement("failure_model");
                 failureTag.addAttribute("name", failureModel.getId().toString());
+
                 if (1 == paramData.getRepairable()) {
-                    RepairModel repairModel = new RepairModel();
-                    repairModel.setId(UUIDUtil.generateId());
-                    repairModel.setType(RepairModel.TYPE_EXP);
-                    repairModel.setParam1(1.0 / paramData.getRepairMttcr());
+                    // 鍙淮淇�
+                    RepairModel repairModel = createRepairModel(paramData);
                     repairModels.add(repairModel);
                     Element repairTag = nodeTag.addElement("repair_model");
                     repairTag.addAttribute("name", repairModel.getId().toString());
@@ -1094,35 +1124,50 @@
             for (String nodeStr : computerNodeListStr) {
                 ModelNode mn = modelNodeAndVnodeList.stream().filter(item ->
                         nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0);
-                node2DOM(null,
+                node2DOM(taskId,
+                        taskPhaseModel,
+                        modelId,
+                        null,
                         productList,
                         paramDataList,
                         gkModelsAssembled,
                         algorithmList,
                         modelNodeAndVnodeList,
                         binoParams,
-                        taskRepairParams,
                         mn, element,
                         failureModels, repairModels);
             }
         }
     }
 
-    private FailureModel createFailureModel(ParamData paramData) {
+    private FailureModel createFailureModel(ParamData paramData, TaskBinoParam taskBinoParam) {
         FailureModel failureModel = new FailureModel();
         failureModel.setId(UUIDUtil.generateId());
         switch (paramData.getReliabDistribType()) {
             case 1:
+                // 鎸囨暟鍒嗗竷
                 failureModel.setType(FailureModel.TYPE_EXP);
                 failureModel.setParam1(1.0 / paramData.getTaskMtbcfRegulate());
                 break;
             case 2:
+                // 濞佸竷灏斿垎甯�
                 failureModel.setType(FailureModel.TYPE_WBL);
                 failureModel.setParam2(paramData.getTaskMtbcfOtherParams2());
                 failureModel.setParam3(paramData.getTaskMtbcfOtherParams3());
                 break;
             case 3:
-                failureModel.setType(FailureModel.TYPE_BIN);
+                // 浜岄」鍒嗗竷
+                if (taskBinoParam.getSimulatTimes().intValue() == taskBinoParam.getSuccessTimes().intValue()) {
+                    // 鐩哥瓑鍒欎负鎴愯触鍨�
+                    failureModel.setType(FailureModel.TYPE_FIX);
+                    failureModel.setParam1(taskBinoParam.getSuccessRate());
+                } else {
+                    // 浜岄」鍒嗗竷
+                    failureModel.setType(FailureModel.TYPE_BIN);
+                    failureModel.setParam1(taskBinoParam.getSuccessRate());
+                    failureModel.setParam2(taskBinoParam.getSimulatTimes());
+                    failureModel.setParam3(taskBinoParam.getSuccessTimes());
+                }
                 break;
             default:
                 break;
@@ -1130,4 +1175,29 @@
 
         return failureModel;
     }
+
+    private RepairModel createRepairModel(ParamData paramData) {
+        RepairModel repairModel = new RepairModel();
+        repairModel.setId(UUIDUtil.generateId());
+        switch (paramData.getRepairDistribType()) {
+            case 1:
+                // 鎸囨暟鍒嗗竷
+                repairModel.setType(FailureModel.TYPE_EXP);
+                repairModel.setParam1(1.0 / paramData.getRepairMttcr());
+                break;
+            case 2:
+                // 濞佸竷灏斿垎甯�
+                repairModel.setType(FailureModel.TYPE_WBL);
+                repairModel.setParam2(paramData.getRepairMttcrOtherParams2());
+                repairModel.setParam3(paramData.getRepairMttcrOtherParams3());
+                break;
+            case 3:
+                // 浜岄」鍒嗗竷锛堢淮淇病鏈夛級
+                break;
+            default:
+                break;
+        }
+
+        return repairModel;
+    }
 }
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 3a77b32..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
@@ -6,7 +6,7 @@
 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.TaskModelCheckResult;
+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;
@@ -76,8 +76,8 @@
      * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛�
      * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull
      */
-    public List<TaskModelCheckResult> checkTaskModel(Long productId, Long taskModelId) {
-        List<TaskModelCheckResult> checkResult = new ArrayList<>();
+    public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskModelId) {
+        List<TaskModelCheckResultDto> checkResult = new ArrayList<>();
         List<XhProductModel> deviceUsedList = new ArrayList<>();    // 妫�鏌ュ璞℃ā鍨嬩腑浣跨敤鍒扮殑鎵�鏈夎澶�
 
         // 1. 鑾峰彇鏁版嵁
@@ -108,7 +108,7 @@
                 setTaskModelCheckResult(taskModel,
                         null,
                         null, null, null,
-                        TaskModelCheckResult.CATEGORY_TASK_TIME, checkResult);
+                        TaskModelCheckResultDto.CATEGORY_TASK_TIME, checkResult);
             }
             List<TaskPhase> phases = taskModelPhaseList.stream().filter(item ->
                     taskModel.getId().equals(item.getTaskId())).collect(Collectors.toList());
@@ -118,7 +118,7 @@
                     setTaskModelCheckResult(taskModel,
                             phase,
                             null, null, null,
-                            TaskModelCheckResult.CATEGORY_PHASE_TIME, checkResult);
+                            TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult);
                 }
                 List<TaskPhaseModel> phaseModels = taskModelPhaseModelList.stream().filter(item ->
                         phase.getId().equals(item.getPhaseId())).collect(Collectors.toList());
@@ -128,7 +128,7 @@
                     setTaskModelCheckResult(taskModel,
                             phase,
                             null, null, null,
-                            TaskModelCheckResult.CATEGORY_GK_TIME, checkResult);
+                            TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
                 } else {
                     // 鏈夊伐鍐垫ā鍨嬫暟鎹�
                     List<TaskPhaseModel> phaseModelWithDurations = taskModelPhaseModelList.stream().filter(item ->
@@ -141,7 +141,7 @@
                                     phase,
                                     taskPhaseModel,
                                     null, null,
-                                    TaskModelCheckResult.CATEGORY_GK_TIME, checkResult);
+                                    TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
                         }
                     } else {
                         // 鏈夊伐鍐垫ā鍨嬭閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐垫ā鍨�
@@ -159,7 +159,7 @@
                                         taskPhaseModel,
                                         null,
                                         node,
-                                        TaskModelCheckResult.CATEGORY_GK_MODEL, checkResult);
+                                        TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
                             } else {
                                 // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬�
 //                                checkGkModel(taskModel, phase, taskPhaseModel, gkModelTops.get(0),
@@ -185,7 +185,7 @@
                               List<ModelNodeAlgorithm> rbdNodeList,
                               List<XhProductModel> productTreeList,
                               List<XhProductModel> deviceUsedList,
-                              List<TaskModelCheckResult> checkResult) {
+                              List<TaskModelCheckResultDto> checkResult) {
         // 棣栧厛鎵惧埌椤跺眰妯″瀷
         List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item ->
                 taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())
@@ -199,7 +199,7 @@
                     taskPhaseModel,
                     null,
                     node,
-                    TaskModelCheckResult.CATEGORY_GK_MODEL, checkResult);
+                    TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
         }
     }
 
@@ -209,20 +209,20 @@
                                          OperatConditModel gkModel,
                                          XhProductModel node,
                                          String category,
-                                         List<TaskModelCheckResult> checkResult) {
-        TaskModelCheckResult result = new TaskModelCheckResult();
+                                         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 TaskModelCheckResult.CATEGORY_TASK_TIME:
+            case TaskModelCheckResultDto.CATEGORY_TASK_TIME:
                 break;
-            case TaskModelCheckResult.CATEGORY_PHASE_TIME:
+            case TaskModelCheckResultDto.CATEGORY_PHASE_TIME:
                 result.setTaskModelPhaseId(taskModelPhase.getId());
                 result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
                 break;
-            case TaskModelCheckResult.CATEGORY_GK_TIME:
+            case TaskModelCheckResultDto.CATEGORY_GK_TIME:
                 result.setTaskModelPhaseId(taskModelPhase.getId());
                 result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
                 if (null != taskModelPhaseModel) {
@@ -230,7 +230,7 @@
                     result.setGkName(taskModelPhaseModel.getOperatConditName());
                 }
                 break;
-            case TaskModelCheckResult.CATEGORY_GK_MODEL:
+            case TaskModelCheckResultDto.CATEGORY_GK_MODEL:
                 result.setTaskModelPhaseId(taskModelPhase.getId());
                 result.setTaskModelPhaseName(taskModelPhase.getPhaseName());
                 result.setGkId(taskModelPhaseModel.getOperatConditId());
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskRepairParamDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskRepairParamDao.xml
index bb33675..ab95b0d 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskRepairParamDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskRepairParamDao.xml
@@ -47,14 +47,53 @@
                            on e.task_id = d.task_id and e.phase_id = d.phase_id and e.equip_type = d.equip_type
     </select>
 
-    <select id="getTaskRepairParams" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskRepairParam">
-        select a.*
-        from
-        task_repair_param a
-        where
-        a.IS_DELETE=0
-        <if test="shipId!=null">
-            and a.task_id = #{taskModelId}
-        </if>
+    <select id="getTaskRepairConstraints" resultType="com.zt.life.modules.mainPart.taskReliability.dto.TaskPhaseConstraintDto">
+        SELECT
+            h.task_id,
+            h.phase_id,
+            b.operat_condit_id as gk_model_id,
+            d.model_id,
+            h.equip_type,
+            h.STATUS,
+            f.`NAME` as product_name,
+            f.ID as product_id
+        FROM
+            task_phase a,
+            task_phase_model b,
+            operat_condit c,
+            operat_condit_model d,
+            model_node_algorithm e,
+            product_model f,
+            param_data g,
+            task_repair_param h
+        WHERE
+            a.task_id = #{taskId}
+          AND a.is_delete = 0
+          AND b.phase_id = a.id
+          and a.id = #{phaseId}
+          AND b.is_delete = 0
+          AND c.id = b.operat_condit_id
+          and c.id = #{gkId}
+          AND c.is_delete = 0
+          AND d.operat_condit_id = c.id
+          AND d.is_delete = 0
+          AND d.is_disabled = 0
+          AND e.model_id = d.model_id
+          AND e.is_delete = 0
+          AND f.id = e.data_id
+          AND f.is_delete = 0
+          AND g.product_id = f.id
+          AND g.is_delete = 0
+          AND g.repairable = 1
+          and h.task_id = a.task_id
+          and h.phase_id = b.phase_id
+          and h.`STATUS` = 1
+          and h.equip_type = f.equip_type
+        order by h.task_id,
+                 h.phase_id,
+                 b.operat_condit_id,
+                 d.model_id,
+                 h.equip_type,
+                 f.`NAME`
     </select>
 </mapper>

--
Gitblit v1.9.1