xyc
2024-03-06 890d7e52a767ec0550b5bfb665efacdd0d12026e
能解析串联、并联、旁联、表决的版本
3个文件已修改
53 ■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/taskReliability/model/ModelNode.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/taskReliability/service/ModelLineService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/RBD-edit-img.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/taskReliability/model/ModelNode.java
@@ -36,4 +36,7 @@
    @ApiModelProperty(value = "")
    private String remark;
    @ApiModelProperty(value = "")
    private String name;
}
modules/mainPart/src/main/java/com/zt/life/modules/taskReliability/service/ModelLineService.java
@@ -131,6 +131,7 @@
                if ("node".equals(modelNode.getNodeType())) {
                    modelNode.setDataId(Long.valueOf(JsonUtils2.getJsonValueByPath(jsonObject, "data/dataId".split("/")).toString()));
                    modelNode.setNodeTypeExt(JsonUtils2.getJsonValueByPath(jsonObject, "data/nodeTypeExt".split("/")).toString());
                    modelNode.setName(JsonUtils2.getJsonValueByPath(jsonObject, "attrs/label/textWrap/text".split("/")).toString());
                }
                modelNodeList.add(modelNode);
            }
@@ -251,27 +252,35 @@
                                List<Algorithm> algoList,
                                int stepNo) {
        String computerList = "";
        String objectList = "";
        for (List<ModelNode> path : listPath) {
            path.remove(path.get(path.size()-1));
            Long id = null;
            String name = "";
            if (path.size()==0) {
                return stepNo;
            } else if (path.size()==1) {
                if ("end".equals(opNode.getNodeType()) && !"start".equals(lastNode.getNodeType())) return stepNo;
                id = path.get(path.size()-1).getId();
                name = path.get(path.size()-1).getName();
            } else {
                id = UUIDUtil.generateId();
                name = id.toString();
                Algorithm algo = new Algorithm();
                algo.setId(id);
                algo.setModelId(modelId);
                algo.setComputerId(id);
                algo.setModelType("series");
                algo.setAlgorithmType("series");
                algo.setComputerList(StringUtils.join(path.stream().map(ModelNode::getId).collect(Collectors.toSet()), ","));
                algo.setComputerList(joinNodeId(path, ","));
                algo.setObjectList(joinNodeName(path, ","));
                algo.setStep(stepNo);
                stepNo++;
                algoList.add(algo);
                name = "v"+ algo.getStep();
            }
            computerList = computerList.equals("") ? id.toString() : computerList + "," + id.toString();
            objectList = objectList.equals("") ? name : objectList + "," + name;
            for (ModelNode node : path) {
                List<ModelLine> lineList4 = modelLineList.stream().filter(item ->
                        item.getEndCell().equals(node.getPicId()) || item.getBeginCell().equals(node.getPicId())).collect(Collectors.toList());
@@ -287,14 +296,15 @@
        algo.setModelType(opNode.getNodeType());
        algo.setAlgorithmType(opNode.getNodeType());
        algo.setComputerList(computerList);
        algo.setObjectList(objectList);
        algo.setStep(stepNo);
        stepNo++;
        algoList.add(algo);
        //将原运算节点改成虚节点
        opNode.setId(id);
//        opNode.setPicId(id.toString());
        opNode.setNodeType("vnode");
        opNode.setName("v"+algo.getStep());
        ModelLine modelLineNew = new ModelLine();
        Long picId2 = UUIDUtil.generateId();
@@ -308,6 +318,24 @@
        return stepNo;
    }
    private String joinNodeId(List<ModelNode> nodeList, String sep) {
        String result = "";
        for (int i = 0; i < nodeList.size(); i++) {
            if (i > 0) result = result + sep;
            result = result + nodeList.get(i).getId().toString();
        }
        return result;
    }
    private String joinNodeName(List<ModelNode> nodeList, String sep) {
        String result = "";
        for (int i = 0; i < nodeList.size(); i++) {
            if (i > 0) result = result + sep;
            result = result + nodeList.get(i).getName();
        }
        return result;
    }
    private void saveModel(Long modelId,
                           List<ModelNode> modelNodeList,
                           List<ModelLine> modelLineList,
web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -19,6 +19,7 @@
              <el-button type="primary" @click="saveDiagram()">保存</el-button>
              <el-button type="primary" @click="analyzeDiagram()">解析</el-button>
              <el-button type="primary" @click="clearDiagram()">清空图形</el-button>
            </el-form-item>
            <el-form-item>
                <el-tooltip class="item" effect="dark" content="左对齐" placement="left">
@@ -115,8 +116,9 @@
        imgsList:[
          {imgPath:'start',imgName:'start',nodeType:'start',imgWidth:60,imgHeight:60,imgId:'1',data:{}},
          {imgPath:'end',imgName:'end',nodeType:'end',imgWidth:60,imgHeight:60,imgId:'2',data:{}},
          {imgPath:'connect',imgName:'connect',nodeType:'connect',imgWidth:30,imgHeight:30,imgId:'3',data:{}},
          // {imgPath:'parallelLeft',imgName:'parallelLeft',nodeType:'parallelLeft',imgWidth:60,imgHeight:60,imgId:'3',data:{}},
          {imgPath:'parallelRight',imgName:'parallel',nodeType:'parallel',imgWidth:60,imgHeight:60,imgId:'4',data:{}},
          // {imgPath:'parallelRight',imgName:'parallel',nodeType:'parallel',imgWidth:60,imgHeight:60,imgId:'4',data:{}},
          {imgPath:'switchRight',imgName:'switch',nodeType:'switch',imgWidth:60,imgHeight:60,imgId:'5',data:{}},
          {imgPath:'voteRight',imgName:'vote',nodeType:'vote',imgWidth:60,imgHeight:60,imgId:'6',data:{}},
        ],
@@ -392,6 +394,14 @@
        // this.diagramIdChange(this.diagramId)
        this.getDiagram()
      },*/
      async clearDiagram() {
          this.dataForm.id = null
          // this.graph.fromJSON(this.emptyJson)
          this.graph.fromJSON('')
          this.graph.centerContent()
          this.graph.zoomToFit()
          // this.graph.freeze()
      },
      async getDiagram() {
        let params = {
          modelId : this.dataForm.modelId
@@ -407,11 +417,7 @@
            this.graph.centerContent()
            this.graph.zoomToFit()
          } else {
            this.dataForm.id = null
            // this.graph.fromJSON(this.emptyJson)
            this.graph.centerContent()
            this.graph.zoomToFit()
            // this.graph.freeze()
            await this.clearDiagram()
          }
      },