xyc
2024-03-28 f3ad14f8af7fb651426d1ee617e7ecb9d3fc9aab
新增产品节点上设置关系,可设置项为“无/旁联/表决”
2个文件已修改
56 ■■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
starter/src/main/java/com/zt/life/AdminApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
@@ -125,25 +125,69 @@
        // 1. 解析出节点与边
        getNodeAndLineFromRbd(modelRbd.getId(), rbdJsonArray, modelNodeList, modelLineList, productImgList);
        // 2. 计算所有节点的入口线数及出口线数
        // 2. 对于有多根入口线的产品节点,将其上的表决、旁联关系剥离成运算符节点,添加到该节点的前面,并添加相应的边
        peelOperationFromProductNode(modelRbd.getId(), modelNodeList, modelLineList);
        // 3. 计算所有节点的入口线数及出口线数
        calcInOutLineNumAllNode(modelNodeList, modelLineList);
        // 3. 复制产品节点(node)到list
        // 4. 复制产品节点(node)到list
        List<ModelNode> modelNodeAndVnodeList = modelNodeList.stream().filter(item ->
                "node".equals(item.getNodeType())).collect(Collectors.toList());
        // 4. 不断将基本模型(串联、并联、旁联、表决、桥联)替换为虚节点而简化图形,直至无法简化为止。
        // 5. 不断将基本模型(串联、并联、旁联、表决、桥联)替换为虚节点而简化图形,直至无法简化为止。
        result = getAlgorithmFromRbd(modelRbd, modelNodeList, modelLineList, algorithmList, modelNodeAndVnodeList);
        // 5. 转换为算法库接口XML
        // 6. 转换为算法库接口XML
        if (result) {
            result = createIfXmlFromRbd(modelRbd, algorithmList, modelNodeAndVnodeList);
        }
        // 6. 保存模型
        // 7. 保存模型
        if (saveFlag) saveModel(modelRbd, modelNodeList, modelLineList, algorithmList, modelNodeAndVnodeList);
        return result;
    }
    private void peelOperationFromProductNode(Long modelId,
                                              List<ModelNode> modelNodeList,
                                              List<ModelLine> modelLineList) {
        List<ModelNode> nodesToAdd = new ArrayList<>();
        List<ModelLine> linesToAdd = new ArrayList<>();
        for (ModelNode node: modelNodeList) {
            List<ModelLine> inLineList = modelLineList.stream().filter(item ->
                    item.getEndCell().equals(node.getPicId())).collect(Collectors.toList());
            if ("node".equals(node.getNodeType()) &&
                    StringUtils.isNotBlank(node.getNodeTypeExt()) &&
                    inLineList.size() > 1) {
                // 旁联or表决
                ModelNode nodeNew =  new ModelNode();
                Long nodeNewId = UUIDUtil.generateId();
                nodeNew.setId(nodeNewId);
                nodeNew.setPicId(nodeNewId.toString());
                nodeNew.setModelId(modelId);
                nodeNew.setNodeType(node.getNodeTypeExt());
                nodeNew.setName(node.getNodeTypeExt());
                nodeNew.setVoteNum(node.getVoteNum());
                nodeNew.setPositionX(node.getPositionX());
                nodeNew.setPositionY(node.getPositionY());
                nodesToAdd.add(nodeNew);
                ModelLine lineNew = new ModelLine();
                Long lineNewId = UUIDUtil.generateId();
                lineNew.setId(lineNewId);
                lineNew.setPicId(lineNewId.toString());
                lineNew.setModelId(modelId);
                lineNew.setBeginCell(nodeNewId.toString());
                lineNew.setEndCell(node.getPicId());
                linesToAdd.add(lineNew);
                for(ModelLine line: inLineList){
                    line.setEndCell(nodeNewId.toString());
                }
            }
        }
        modelNodeList.addAll(nodesToAdd);
        modelLineList.addAll(linesToAdd);
    }
    private boolean createIfXmlFromRbd(ModelRbd modelRbd,
                                       List<Algorithm> algorithmList,
                                       List<ModelNode> modelNodeAndVnodeList) {
starter/src/main/java/com/zt/life/AdminApplication.java
@@ -18,6 +18,7 @@
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Scheduled;
import java.io.File;
@@ -32,6 +33,7 @@
// org.activiti.spring.boot.SecurityAutoConfiguration.class,
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
@EnableCaching
@EnableAsync
public class AdminApplication extends SpringBootServletInitializer {
    @Value("${zt.oss.local-path}")