xyc
2024-08-13 ecd2f8acec4e743e18d978b7e0a1bb92bd17e70e
修改仿真后台
8个文件已修改
2 文件已重命名
1个文件已添加
320 ■■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskRepairParamDao.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePairDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/taskReliability/TaskRepairParamDao.xml 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
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);
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePairDto.java
File was renamed from modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/ModelLinePair.java
@@ -4,7 +4,7 @@
import lombok.Data;
@Data
public class ModelLinePair {
public class ModelLinePairDto {
    private ModelLine line1;
    private ModelLine line2;
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResultDto.java
File was renamed from modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.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 = "工况时长未配置";
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskPhaseConstraintDto.java
New file
@@ -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 = "产品结构树节点ID(当前未使用)")
    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;
}
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;
}
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);
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;
/**
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:
                // 二项分布
                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;
    }
}
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表示没有错误,不会返回null
     */
    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());
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>